Url rewriting IIS 7.5 URL重写编码
我在web.config中有以下重写规则:Url rewriting IIS 7.5 URL重写编码,url-rewriting,iis-7.5,azure-web-app-service,Url Rewriting,Iis 7.5,Azure Web App Service,我在web.config中有以下重写规则: <rewrite> <rules> <rule name="Search" stopProcessing="true"> <match url="^search/(.+)$" /> <action type="Redirect" url="?q={R:1}" /> </rule> </rules> </rewrite
<rewrite>
<rules>
<rule name="Search" stopProcessing="true">
<match url="^search/(.+)$" />
<action type="Redirect" url="?q={R:1}" />
</rule>
</rules>
</rewrite>
它在IIS Express 8.0和Azure网站上的IIS 7.5上都可以正常工作,URL类似于/search/test
(仅限ascii字符)-重定向到/?q=test
。
但是,对于Azure网站IIS 7.5上带有unicode字符(
/search/СССС
或/search/%D1%D0%B5%D1%81%D1%82
)的URL,会重定向到/q=cfÐÐÐāāāā
(或/q=%C3%91%E2 80%9A%C3%90%C2%C2%B5%c5%C3%C3%C3%C3%C3%91%E2 91%80%9A
)而不是<81%D1%D1%D1%D1>/code>/D1%D1%D1%。它在IIS Express 8.0上正常工作 您应该使用内部{UrlEncode:{}}
函数正确编码URL中无效的字符(例如UTF-8字符)。因此,将URL部分替换为:URL=“?q={UrlEncode:{R:1}}”
谢谢,它可以工作!但是它应该是url=“?q={UrlEncode:{R:1}}”
。我想我试过这个,但看起来我试过别的。仅供参考: