Принудительное перенаправление на SSL для всех страниц, кроме одной - PullRequest
1 голос
/ 07 апреля 2009

Я пытаюсь использовать apache2 mod_rewrite для принудительного подключения SSL к веб-сайту. Пока что в записи <VirtualHost> сайта все работает нормально:

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [QSA,NC,R,L]

Это работает хорошо, и перенаправляет все, что я и хотел.

Однако на сайте есть одна конкретная страница, использующая API карт Google, которая недоступна через SSL и, следовательно, вызывает предупреждения о смешанном контенте в браузере. Итак, я бы хотел, чтобы эта страница, предназначенная только для карт, не перенаправляла и использовала обычное не-ssl-соединение.

URL, для которого я не хочу SSL, имеет форму /thing/add/{ID}/page3, где {ID} - это числовое значение.

Возможно ли это?

1 Ответ

2 голосов
/ 07 апреля 2009
RewriteEngine On

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^thing/add/\d+/page3$ - [L]

RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(thing/add/\d+/page3) $ http://%{HTTP_HOST}/$1 [QSA,NC,R,L]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [QSA,NC,R,L]

Правила обрабатываются сверху вниз; первый останавливает перезапись страницы карт, если не в SSL; вторая (необязательная) перенаправляет эти страницы в незащищенные при доступе через SSL; для всего остального применяется старое правило.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...