繁体   English   中英

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

[英]Regular expressions in URL Rewrite Module for IIS7

如果url没有扩展名,我有以下重写规则来附加.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重写模块支持哪些正则表达式? 如何做出积极的回顾断言?

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

编辑(响应评论):如果你想包含简单的文件名,你可以写

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

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

快速:尝试一个mod-rewrite clone 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克隆插件的公司。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM