帮助重写规则

时间:2011-01-11 22:09:44

标签: iis isapi-rewrite

我有以下RewriteRule:

RewriteRule ^/([^?.]+)$ /MyPage.aspx\?Name=$1 [NC,L]

当我的网址为:http://www.somedomain.com/Tony

时,该工作正常

我得到以下结果:/MyPage.aspx?Name=Tony但我需要更改它以便它适用于此类网址:http://www.somedomain.com/MemberPages/Tony

有人能告诉我Regexp应该是什么,不幸的是,我对正则表达式并不是很好,所以对任何帮助表示赞赏。

谢谢,

2 个答案:

答案 0 :(得分:1)

如果您只想选择允许MemberPages/,可以这样做:

RewriteRule ^/(MemberPages\/)?([^?.]+)$ /MyPage.aspx\?Name=$2 [NC,L]

?表示可选地包含前面的元素,即使该元素是完整的捕获组,如(MemberPages/)。然后,您必须将后向引用更改为$2以考虑其他捕获组。

因此,此规则适用于两个网址:

http://www.somedomain.com/Tony
http://www.somedomain.com/MemberPages/Tony

两者都会去:

/MyPage.aspx?Name=Tony

答案 1 :(得分:0)

这适用于任何二级路径:

RewriteRule ^ / [^ /] + /([^ ?.] +)$ / MyPage.aspx \?Name = $ 1 [NC,L]

这适用于/ MemberPages / -prefixed路径

RewriteRule ^ / MemberPages /([^?.]+)$ /MyPage.aspx\?Name=$1 [NC,L]