Регулярное выражение исключения 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.

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