2013-09-02 2 views
0

Я настраиваю URL-адрес Rewrite на IIS, и мне нужно сопоставить следующие URL-адреса с помощью regex.RegEx соответствует всем ссылкам сайта, кроме тех, которые содержат admin

 
http://sub.mysite.com 
sub.mysite.com 
sub.mysite.com/ 
sub.mysite.com/Site1 
sub.mysite.com/Site1/admin 

но не:

 
sub.mysite.com/admin 
sub.mysite.com/admin/somethingelse 
sub.mysite.com/admin/admin 

Сайт это сам (sub.mysite.com) не должно быть "жёстко" в выражении. Вместо этого он должен быть сопоставлен чем-то вроде .*.

Я действительно пуст на этом. Я нашел решения для соответствия различным URL-адресам, но как только я попытаюсь объединить их, либо ни один из них не соответствует, либо все они.

Я надеюсь, что кто-то может мне помочь.

+0

Это проще, чтобы соответствовать URL-адресов с помощью '/ администратор /' и взяли каждый. – kirilloid

ответ

4

Для вашего конкретного случая, предполагая, что вы соответствие часть после домена (REQUEST_URI):

(?!/admin).*

(?!...) является negative lookahead. Я не уверен, поддерживается ли он в движке URL-адреса RIS. Если нет, лучшим подходом будет проверка дополнительного подхода:

Или, как сказал @kirilloid, просто сопоставьте /admin/? и отбросьте (обратите внимание на косые черты).

BTW. если вы хотите быстро проверить Regexps с «визуальной» обратной связи, я настоятельно рекомендую http://gskinner.com/RegExr/

+1

Механизм перезаписи IIS поддерживает путь от корня сайта (т. Е. Без домена), такого как Apache, не так ли? – kirilloid

+0

@ kirilloid Да, вы правы! Я отредактирую ответ. – szalski

1
([A-Za-z0-9]+.)+.com(?!/admin)/?([A-Za-z0-9]+/?)* 

это следует сделать трюк

Смежные вопросы