IIS重写与子标题生成有&符号问题

时间:2015-02-18 12:56:33

标签: url-rewriting iis-7 rewrite isapi-rewrite

我试图更改网址

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-()&amp;]+)" />

<match url="^company/([_0-9a-z-()&]+)" />

这两个都会导致服务器错误。

如果不更改传入的网址构成,我该怎么办?

提前致谢

尼克

1 个答案:

答案 0 :(得分:0)

您必须使用UNENCODED_URL变量,该变量存储原始网址(不是未编码的,将&拆分为新参数)。

如果需要,您可以针对这些条件运行匹配并使用{C:1}语法而不是{R:1}语法(与编码规则模式匹配)。

请参阅:http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference