Как заставить SSL для некоторых URL-адресов и не-SSL для всех других? - PullRequest
3 голосов
/ 05 мая 2010

Я хотел бы убедиться, что определенные URL-адреса на моем сайте всегда доступны через HTTPS, а все остальные URL-адреса доступны через HTTP.

Я могу заставить любой случай работать в моем файле .htaccess, однако если я включу оба, то я получу бесконечные перенаправления.

Мой файл .htaccess:

<IfModule mod_expires.c>
# turn off the module for this directory
ExpiresActive off
</IfModule>

Options +FollowSymLinks
AddHandler application/x-httpd-php .csv

RewriteEngine On

RewriteRule ^/?registration(.*)$ /register$1 [R=301,L]

# Force SSL for certain URL's
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (login|register|account)
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Force non-SSL for certain URL's
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !(login|register|account)
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Force files ending in X to use same protocol as initial request
RewriteRule \.(gif|jpg|jpeg|jpe|png|ico|css|js)$ - [S=1]

# Use index.php as the controller
RewriteCond %{REQUEST_URI} !\.(exe|css|js|jpe?g|gif|png|pdf|doc|txt|rtf|xls|swf|htc|ico)$ [NC]
RewriteCond %{REQUEST_URI} !^(/js.*)$
RewriteRule ^(.*)$ index.php [NC,L]

Есть ли у кого-нибудь предложения о том, как заставить страницы входа в систему, регистрации и учетной записи быть https, а остальные страницы - нет?

1 Ответ

1 голос
/ 26 мая 2011

Похоже, вы используете HTTPS = включено для SSL и HTTPS = выключено для незашифрованных соединений.

Вы должны дважды проверить, что переменная окружения HTTPS установлена ​​так, как вы ожидаете. В противном случае произойдет бесконечное перенаправление - как вы испытываете.

Например: https://issues.apache.org/bugzilla/show_bug.cgi?id=50581

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