Url rewriting IIS重写时,slug生成与安培数有关

Url rewriting IIS重写时,slug生成与安培数有关,url-rewriting,iis-7,rewrite,isapi-rewrite,Url Rewriting,Iis 7,Rewrite,Isapi Rewrite,我正在尝试更改url,如 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" ne

我正在尝试更改url,如

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文件中

直到公司名称包含一个符号和,例如火腿和鸡蛋,此项功能才起作用

公司名称是url编码的,所以它实际上像火腿蛋一样到达

我的哪个模式写入example.com?slug=ham-

我已经试着在图案上加上了符号

e、 g



这两种情况都会导致服务器错误

在不更改传入url组成的情况下,我可以做什么

提前谢谢


Nick

您必须使用
UNENCODED\u URL
变量,该变量存储原始URL(而不是UNENCODED,它将
拆分为一个新参数)

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


请参阅:

将smth简化,例如“^company/([^/]+)”是的,我刚刚尝试了你的建议,之前刚刚匹配了^company/之后的任何内容,但它们都会抛出500服务器错误
<match url="^company/([_0-9a-z-()&amp;]+)" />
<match url="^company/([_0-9a-z-()&]+)" />