Как заставить переписать на HTTPS кроме нескольких страниц в Apache? - PullRequest
7 голосов
/ 28 апреля 2011

Мне нужно принудительно перенаправить все страницы в Apache на HTTPS, за исключением нескольких страниц. Как написать правило перезаписи в Apache для этого условия?

Ответы [ 2 ]

21 голосов
/ 28 апреля 2011
RewriteEngine On

RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} !^\/page1\/
RewriteCond %{REQUEST_URI} !^\/page2\/
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301]    

RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI} \/page1\/ [OR]
RewriteCond %{REQUEST_URI} \/page2\/
RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301]

Первый набор правил будет перенаправлять все страницы, к которым нет доступа через HTTPS, и которые не /page1/ или /page2/ на тот же URL, но https://. Второй набор правил будет гарантировать, что /page1/ и /page2/ будут перенаправлены обратно на http://, если к ним обращаются через https://.

7 голосов
/ 14 января 2015

Более простое решение:

RedirectMatch ^((?!\/(page1|page2)).*)$ https://%{HTTP_HOST}$1

Это перенаправит все, кроме страницы 1 и страницы 2, на https текущего хоста.

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