IIS7的URL重写模块中的正则表达式

时间:2010-03-16 17:32:27

标签: regex iis web-applications url-rewriting

如果网址没有扩展名,我有以下重写规则附加.aspx扩展名。

     <rule name="SimpleRewrite" stopProcessing="true">
         <match url="^(.*(?&lt;=/)([^/.]*))$" />
         <action type="Rewrite" url="{R:1}.aspx" />
     </rule>

但是规则不起作用:

Error HTTP 500.52 - URL Rewrite Module Error.
The expression "^(.*(?<=/)([^/.]*))$" has an invalid syntax.

但是,这个正则表达式适用于.NET。 IIS Url重写模块支持哪些正则表达式?如何做出积极的回顾断言?

2 个答案:

答案 0 :(得分:2)

也许.*/[^/.]+$会满足您的需求?重写只是“{R:0} .aspx”

编辑(回复评论):如果要包含简单文件名,可以编写

^(.*/)?[^/.]+$

答案 1 :(得分:1)

听起来你的问题可能有一个更简单的解决方案,不需要正则表达式,但如果没有,这可能会有所帮助。

快速:尝试使用模拟重写克隆IIS插件ISAPI_Rewrite Lite进行复杂的常规表达。

长:大约一年前,我在Drupal网站上进行了ISS部署,其中所有主要,次要和我认为三级链接都由Drupal处理,但更深层次的遗留内容应该是正常的(而不是被Drupal 404接管)。

我们使用了ISAPI_Rewrite 3,这是Apache的mod_rewrite的“端口”(兼容语法),用于在遗留内容和drupal之间进行定位,使用一系列重写过滤器和规则来检查与遗留中的URL匹配的任何内容让Drupal处理剩下的文件夹之前的文件夹。

http://www.helicontech.com/isapi_rewrite/

ISAPI_Rewrite Lite是免费的,具有我需要的所有功能。另外,你可以到处购物,Helicon并不是唯一一家为IIS创建Mod-Rewrite克隆插件的公司。