IIS URL重写具有外来文本的模块

时间:2013-01-18 03:09:19

标签: asp.net url-rewriting iis-7.5 httpmodule

我们使用IIS URL重写模块,就像这样

<rule name="RewriteSearch" stopProcessing="true">
<match url="^Search/([_0-9a-z+-]+)" />
<action type="Rewrite" url="CommonPages/Search.aspx?term={R:1}" />
</rule>

http://www.tickettail.com/Search/NormalText123 工作正常

但是...

http://www.tickettail.com/Search /ราคัดมาใ

(这是泰语) 将不会。 如何修改匹配以允许外来文本?

由于

1 个答案:

答案 0 :(得分:2)

您要匹配的正则表达式只接受字符_09az+-。为了接受所有字符,您必须将正则表达式修改为例如(.+)(这会接受任何字符,并且至少需要一个字符。

其次,为了将任何字符正确传递到搜索页面,您必须使用内置的{UrlEncode:{}}函数对该术语进行URL编码。还要确保页面可以处理并输出UTF-8。

以下规则有效:

<rule name="RewriteSearch" stopProcessing="true">
    <match url="^Search/(.+)" />
    <action type="Rewrite" url="CommonPages/Search.aspx?term={UrlEncode:{R:1}}" />
</rule>