Назад | Перейти на главную страницу

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

но это не сработает. Не знаю, в чем проблема.

Вместо этого используйте перезапись. Попробуйте что-нибудь вроде

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.