我试图更改网址
example.com/company/company-1
到
example.com?slug=company-1
我使用以下模式重写
<rule name="company">
<match url="^company/([_0-9a-z-()]+)" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="company.php?slug={R:1}" />
</rule>
在我的web.config文件中。
这适用于包含&符号的公司名称,例如ham-&安培; -eggs
公司名称是网址编码的,所以它实际上就像火腿26-鸡蛋一样
我的模式写到example.com?slug=ham -
我尝试将&符添加到模式
e.g。
<match url="^company/([_0-9a-z-()&]+)" />
和
<match url="^company/([_0-9a-z-()&]+)" />
这两个都会导致服务器错误。
如果不更改传入的网址构成,我该怎么办?
提前致谢
尼克
答案 0 :(得分:0)
您必须使用UNENCODED_URL
变量,该变量存储原始网址(不是未编码的,将&
拆分为新参数)。
如果需要,您可以针对这些条件运行匹配并使用{C:1}
语法而不是{R:1}
语法(与编码规则模式匹配)。
请参阅:http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference