【问题标题】:What is the best practice for auto switching from HTTP to HTTPS从 HTTP 自动切换到 HTTPS 的最佳实践是什么
【发布时间】:2011-07-26 15:11:55
【问题描述】:

我很好奇。将用户从http://www.example.com 自动切换到https://www.example.com 的最佳做法是什么

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

人们会谈论一些事情,例如检查 $_SERVER ["SERVER_PROTOCOL"]$_SERVER['SERVER_PORT']$_SERVER['HTTPS'],但我想知道最佳做法是什么。

【问题讨论】:

标签: php http ssl https


【解决方案1】:

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]

【讨论】:

    【解决方案2】:

    在请求到达真正的应用服务器之前重定向它,即将它重定向到像 nginx/apache 这样的反向代理上。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多