如何使用 PHP 中特定的 .htaccess 和 mod_rewrite 页面强制使用 SSL/https。
对于 Apache,您可以使用mod_ssl以下命令强制 SSL SSLRequireSSL Directive:
mod_ssl
SSLRequireSSL Directive
该指令禁止访问,除非为当前连接启用 HTTP over SSL(即 HTTPS)。这在启用 SSL 的虚拟主机或目录中非常方便,可用于防御暴露应受保护的内容的配置错误。当此指令存在时,所有未使用 SSL 的请求都将被拒绝。
不过,这不会重定向到 https。mod_rewrite要重定向,请在您的 .htaccess 文件中尝试以下操作
mod_rewrite
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
或提供的各种方法中的任何一种
如果您的提供商禁用了 .htaccess,您也可以在 PHP 中解决此问题(这不太可能,因为您要求它,但无论如何)
if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') { if(!headers_sent()) { header("Status: 301 Moved Permanently"); header(sprintf( 'Location: https://%s%s', $_SERVER['HTTP_HOST'], $_SERVER['REQUEST_URI'] )); exit(); } }