Что является лучшим методом для автоматического переключения с HTTP на HTTPS - PullRequest
9 голосов
/ 31 марта 2011

Мне любопытно.Какова оптимальная практика автоматического переключения пользователя с http://www.example.com на https://www.example.com

, т. Е. С http на https ?В идеале я хотел бы сделать так, чтобы независимо от того, что URL (и любые возможные данные для получения)

Есть пара вещей, о которых люди болтают, например проверка $_SERVER ["SERVER_PROTOCOL"] или $_SERVER['SERVER_PORT'] или $_SERVER['HTTPS'], но яхотел бы знать, что такое лучшая практика.

Ответы [ 3 ]

14 голосов
/ 31 марта 2011

PHP

Если вы хотите принудительно http https, сделайте это ...

if ( ! isset($_SERVER['HTTPS'])) {
   header('Location: https://' . $_SERVER["SERVER_NAME"] . $_SERVER['REQUEST_URI']);
}

Однако, если у вашего сайта есть пользовательский порт, вам также необходимо добавить $_SERVER['SERVER_PORT']. $_SERVER['REQUEST_URI'] также не установлен на IIS, если вы его используете.

Apache .htaccess / httpd.conf

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
0 голосов
/ 31 марта 2011

Поместите эти строки в ваш файл .htaccess в корневой каталог вашего сайта

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.yousite.com/$1 [R,L]

также, если у вас есть только какой-то каталог, который вы хотите защитить (например, каталог, в котором находится скрипт входа в систему), то поместите файл .htaccess в этот каталог, содержащий эти строки

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} /path/to/directory
RewriteRule ^(.*)$ https://www.yousite.com/path/to/directory/$1 [R,L]
0 голосов
/ 31 марта 2011

перенаправьте его до того, как запрос достигнет реального сервера приложений, т.е. перенаправьте его на обратный прокси-сервер, например, nginx / apache.

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