Регулярное выражение исключения Apache MatchRedirect
Я хочу перенаправить любой URL, который является Https и не начинается с "system_" на тот же URL, что и http.
Например, для этого URL:
https://exsite.tld/some/thing/that/not/start/with/pattern
к:
http://exsite.tld/some/thing/that/not/start/with/pattern
но этот URL:
https://exsite.tld/system_aas3f4
Не должен перенаправлять.
Я попробую:
RedirectMatch ^/?((?!(system_)).*) http://exsite.tld/$1
но это не сработает. Я не знаю в чем проблема.
1 ответ
Решение
Используйте вместо этого переписать. Попробуйте что-то вроде
RewriteEngine on
RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI} !^/system_
RewriteRule ^/(.*) http://exsite.tld/$1 [R=301,L]
должен сделать это. Пожалуйста, проверьте это перед внедрением в живую среду.
Что означают эти правила: 1. включить механизм перезаписи, 2. проверить, включен ли HTTPS, 3. проверить, не начинается ли путь URI system_
, Если оба вышеуказанных условия выполняются, выполните переписывание в версию вашего домена http для всех оставшихся URI.