我尽力扫描论坛寻求帮助,以制作 web.config 来重写此类 url
domain.com/default.asp?id=3&language=2
我希望这可以是
domain.com/en/service
where language=2
是“恩”
和id=3
是页面“Service”(此名称存在于 mySQL 中)
我只能找到反之亦然的例子......
像这样
<rewrite>
<rules>
<rule name="enquiry" stopProcessing="true">
<match url="^enquiry$" />
<action type="Rewrite" url="/page.asp" />
</rule>
</rules>
</rewrite>
我希望它是这样的......我知道这是不正确的,但也许可以解释我的问题。
<rewrite>
<rules>
<rule name="enquiry" stopProcessing="true">
<match url="^default.asp?id=3&language=2$" />
<action type="Rewrite" url="/en/serice" />
</rule>
</rules>
</rewrite>
如果你想使用正则表达式,你可以这样做
<rule name="RewriteUserFriendlyURL1" stopProcessing="true">
<match url="^([^/]+)/([^/]+)/?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="default.asp?language={R:1}&id={R:2}" />
</rule>
这会将“domain.com/en/service”重写为“domain.com/default.asp?language=en&id=Service”,或将“domain.com/2/3”重写为“domain.com/default.asp?language” =2&id=3"
要将 2 更改为 en,将 3 更改为 service,以及所有其他选项,尽管我认为您需要为每个排列使用单独的规则,或者在您的 asp 页面中使用某种逻辑来读取您的查询字符串变量并发送相应的您的 SQL 查询的值。另请注意,友好 URL 中的参数与重写 URL 中的查询字符串变量以相同的顺序出现,尽管这实际上不应该成为问题。如果有人尝试使用原始的“不友好”url 访问该页面,无论他们以哪种方式输入查询字符串变量,他们都会找到他们正在寻找的内容。
请注意,我实际上并没有手动编写上面的规则,而是使用 IIS 管理器中的 URL 重写模块生成它 - 它使生活变得更加轻松
另请注意,正如我在另一个答案中与同名者讨论的那样,这仅适用于 IIS7 及更高版本
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)