Помогите с правилом перезаписи - PullRequest
0 голосов
/ 12 января 2011

У меня есть следующий RewriteRule:

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

, который отлично работает, когда мой URL: http://www.somedomain.com/Tony

Я получаю следующий результат: /MyPage.aspx?Name=Tony, но мне нужно изменить егопоэтому он работает с этим типом URL: http://www.somedomain.com/MemberPages/Tony

Может кто-нибудь сказать мне, каким должно быть регулярное выражение? К сожалению, я не очень хорошо разбираюсь в регулярных выражениях, поэтому любая помощь приветствуется.

Спасибо,

Тони

Ответы [ 2 ]

1 голос
/ 12 января 2011

Если вы просто хотите дополнительно разрешить MemberPages/, вы можете сделать это следующим образом:

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

? означает, что при желании можно включить предыдущий элемент, даже если этот элемент является полной группой захвата, например(MemberPages/).Затем вам нужно изменить обратную ссылку на $2, чтобы учесть дополнительную группу захвата.

Так что это правило будет работать для обоих URL:

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

Будут ли оба переходить к:

/MyPage.aspx?Name=Tony
0 голосов
/ 12 января 2011

Это будет работать для любого пути второго уровня:

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

Это будет работать для путей / MemberPages / с префиксом

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

...