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]+/?)*
это должно сработать