从HTTP切换到HTTPS的最佳做法是什么?

时间:2011-03-31 05:57:18

标签: php http ssl https

我很好奇。将用户从http://www.example.com自动切换到https://www.example.com

的最佳做法是什么?

即。从 http https ?理想情况下,我想这样做,无论网址是什么(以及任何可能的获取数据)

人们聊了几件事,比如检查$_SERVER ["SERVER_PROTOCOL"]$_SERVER['SERVER_PORT']$_SERVER['HTTPS'],但我想知道最佳做法是什么。

3 个答案:

答案 0 :(得分:14)

PHP

如果您想强制httphttps,请执行此操作...

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

但是,如果您的网站有自定义端口,则还需要添加$_SERVER['SERVER_PORT']。如果您正在使用它,也不会在IIS上设置$_SERVER['REQUEST_URI']

Apache .htaccess / httpd.conf

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

答案 1 :(得分:0)

在请求到达真实应用服务器之前重定向它,即在反向代理上重定向它,如nginx / apache。

答案 2 :(得分:0)

将这些行放在您网站根目录中的.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]