我很好奇。将用户从http://www.example.com自动切换到https://www.example.com
的最佳做法是什么?即。从 http 到 https ?理想情况下,我想这样做,无论网址是什么(以及任何可能的获取数据)
人们聊了几件事,比如检查$_SERVER ["SERVER_PROTOCOL"]
或$_SERVER['SERVER_PORT']
或$_SERVER['HTTPS']
,但我想知道最佳做法是什么。
答案 0 :(得分:14)
如果您想强制http
到https
,请执行此操作...
if ( ! isset($_SERVER['HTTPS'])) {
header('Location: https://' . $_SERVER["SERVER_NAME"] . $_SERVER['REQUEST_URI']);
}
但是,如果您的网站有自定义端口,则还需要添加$_SERVER['SERVER_PORT']
。如果您正在使用它,也不会在IIS上设置$_SERVER['REQUEST_URI']
。
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]