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

Перенаправить HTTPS на HTTP, за исключением определенного URL

Мы хотели бы перенаправить весь трафик HTTPS на HTTP, за исключением определенного URL-адреса, который является / user / login.

Пока у нас есть:

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^user/login(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

Но это вызывает цикл перенаправления, когда он перенаправляет обратно на HTTP

Примерно так должно работать:

RewriteEngine on
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/user/login
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R,L]

Но для меня это не имеет особого смысла. Было бы лучше, если вы перенаправляете только запросы на / user / login через SSL, а все остальное оставите как есть:

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule /user/login(.*) https://%{HTTP_HOST}/user/login$1 [R,L]

Я считаю, что это должно помочь:

RewriteEngine On
RewriteBase /

# Turn SSL on for /user/login
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/user/login
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

# Turn SSL off everything but /user/login
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/user/login
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

Вышеуказанное будет делать следующее:

1. User types: https://yourdomain.com/user/login - no redirect
2. User types: http://yourdomain.com/user/login -> redirect to: https://yourdomain.com/user/login
3. User types: https://yourdomain.com/somerandomfile.php -> redirect to: http://yourdomain.com/somerandomfile.php
4. User types: http://yourdomain.com/somerandomfile.php - no redirect

Вы ищете перенаправление, когда URI не совпадает с / user / login / ?? вот ответ.

https://stackoverflow.com/questions/7084048/apache-redirect-regexp-match-something-that-is-not-following-something/7084117#7084117