RegEx соответствует всем ссылкам на сайт, кроме тех, которые содержат админ

Я настраиваю URL Rewrite на IIS, и мне нужно сопоставить следующие URL с помощью регулярных выражений.

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-адресам, но как только я пытаюсь объединить их, ни один из них не совпадает, или все они не соответствуют.

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

2 ответа

Решение

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

(?!/admin).*

(?!...) это негативный взгляд Я не уверен, поддерживается ли он в движке перезаписи URL IIS. Если нет, лучшим подходом будет проверка на дополнительный подход:

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

КСТАТИ. Если вы хотите быстро протестировать RegExps с "визуальной" обратной связью, я настоятельно рекомендую http://gskinner.com/RegExr/

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

это должно сработать

Другие вопросы по тегам