将HTTP重定向到HTTPS。什么是最好的方法?

时间:2014-04-13 21:37:33

标签: linux apache http mod-rewrite https

我已经高低搜索了这个问题,所以非常感谢任何帮助。

我有一个带有apache的Linux服务器,我试图了解哪些特定方法可用于接受HTTP请求并在同一服务器上转发或重定向到HTTPS。

我还需要知道为什么一种方法可能比另一种方法更好,为什么你会选择一种特定方法而不是另一种方法呢?这对我来说非常重要。

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

使用Apache + PHP,有几种不同的方式:服务器配置或PHP代码。在服务器配置中执行此类检查的好处是,它将在任何地方应用,或者仅在每个目录的基础上应用,而无需在该文件夹或站点中的每个页面上更改PHP。服务器配置还提供更快的运行时间。

服务器配置

使用mod_rewrite,您可以将以下行添加到VHost配置文件中:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{SERVER_NAME} (.*)
RewriteRule (.*) https://%1/$1 [R=301,L]

显然,必须在服务器上启用mod_rewrite才能使其正常工作。 Apache's mod_rewrite documentation有更多详情。

PHP代码

正如其他人所提到的,PHP提供了一个header函数,可用于设置Location HTTP响应头,并将客户端重定向到HTTPS。这不需要访问服务器配置或mod_rewrite。

答案 1 :(得分:-1)

好吧,假设您正在使用PHP,我的工作是:

header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], true, 301);

但还有很多其他方式,这取决于您当时的工作。我确信有人会有更好的答案。

祝你好运!