如何修改正则表达式

时间:2011-08-05 09:38:06

标签: regex url-rewriting

如何修改正则表达式,以便它也可以在我的URL

中接受+

见:http://awakeningwithin.simpletix.com/Search/Lorem+/ ......错误

如果您删除符号: http://awakeningwithin.simpletix.com/Search/Lorem/ ......它有效。

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

3 个答案:

答案 0 :(得分:3)

网址中的加号+字符表示SPACE(与%20相同)。

1。基于以上内容尝试这一个:^search/([-_0-9a-z\+ ]+)

2。如果您看到404错误,请执行以下操作:

  

HTTP错误404.11 - 未找到

     

请求过滤模块配置为拒绝该请求   包含双重转义序列。

  • 转到IIS管理器,打开请求过滤器模块(全局..或特定网站的模块)
  • 在侧栏(或通过上下文菜单)选择修改功能设置
  • 勾选允许双重转义

或使用此代码(位于网站根文件夹中 web.config 的某处):

<system.webServer>
    <security>
        <requestFiltering allowDoubleEscaping="true" />
    </security>
</system.webServer>

如果#1不起作用,则执行#1 AND#2。

在IIS 7.5上测试 - 工作正常

答案 1 :(得分:0)

您可以使用

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

我只是将+添加到允许的字符中。请注意,-必须仍然位于字符集的最后,因为z-+具有特殊含义(z和plus之间的所有字符......无论这意味着什么)。

答案 2 :(得分:0)

如何在可接受的字符列表中添加“+”:

([+_0-9a-z-]+)