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

标签 linux apache http mod-rewrite https

我四处寻找这个问题的良好答案,因此非常感谢您的帮助。

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

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

感谢您的帮助

最佳答案

使用 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 响应 header ,并将客户端重定向到 HTTPS。这不需要访问服务器配置或 mod_rewrite。

关于linux - 将 HTTP 重定向到 HTTPS。最好的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23048742/

相关文章:

apache - Amazon EC2 和 Namecheap 域和子域设置?

apache - 一个 IP 地址上的一个 SSL 证书服务于多个域

java - 将自定义协议(protocol)导入 MS Excel/Access

java - 自定义 HTTP 请求 header

php - CURL 结果放入 PHP 数组?

linux - 在启动时启动 tty.js

linux - 创建目录的 tar.gz 并清理除文件以外的目录?

python - Django、WSGI 和 Apache 的语法错误

linux - 为什么共享库的 ELF header 将 Linux 指定为 OSABI?

C++指针值改变