Выборочный SSL с .htaccess принудительно http: // или https: // - PullRequest
1 голос
/ 10 июня 2010

Я пытаюсь быть более избирательным, когда страницы / запросы используют SSL по соображениям производительности. Я хотел бы использовать htaccess для перенаправления на https:// только для необходимых страниц и перенаправления на http:// для всего остального Вот что у меня есть:

RewriteEngine On

# force https
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)/(abc|xyz)(.*)$ https://%{HTTP_HOST}/$1/$2 [R=301,NC,L]

RewriteCond %{SERVER_PORT} ^443$
RewriteCond %{HTTP_REFERER} !^https(.*)/(abc|xyz)(.*)$ [NC]
RewriteCond %{REQUEST_URI} !^(.*)/(abc|xyz)(.*)$ [NC]
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ initialize.php [QSA,L]

Безопасные запросы должны быть abc или xyz. Проблема в том, что если запрашивается http:// example.com/abc, он перенаправляется на http://example.com/initialize.php. Незащищенная страница работает должным образом.

1 Ответ

0 голосов
/ 01 ноября 2013

Поскольку этот вопрос уже несколько лет, я вполне уверен, что он уже решен, но для людей, которые могут столкнуться с этим, я думаю, что-то подобное может сработать. Сложно понять, что такое abc и xyz, но я предположу, что они являются частью пути URI.

# Forward some URI's to HTTPS.
RewriteCond %{HTTPS} =off
RewriteCond $1 (abc|xyz) [NC]
RewriteRule ^(.+)$ https://%{HTTP_HOST}%{REQUEST_URI} [QSA,S=1,L]

# Forward rest of the request to HTTP
RewriteCond %{HTTPS} =on
RewriteCond $1 !(abc|xyz) [NC]
RewriteRule ^(.+)$ http://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ initialize.php [QSA,L]

Кроме того, советы по устранению неполадок могут быть включены mod_rewrite logging .

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