使用.htaccess和mod_rewrite强制SSL / https

桑杰·莎(Sanjay Shah)

如何使用PHP中特定的.htaccess和mod_rewrite页面强制使用SSL / https。

高登

对于Apache,您可以使用mod_ssl强制SSL SSLRequireSSL Directive

除非为当前连接启用了SSL上的HTTP(即HTTPS),否则该指令禁止访问。这在启用SSL的虚拟主机或目录中非常方便,可防止配置错误暴露应受保护的内容。使用此指令时,将拒绝所有未使用SSL的请求。

但这不会重定向到https。要重定向,请mod_rewrite在.htaccess文件中尝试以下操作

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();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用HyperlinkedModelSerializer强制使用https?

强制我的heroku应用使用SSL(https)

如何强制UriBuilder使用https?

Azure功能:强制使用HTTPS

如何使用Namecheap和Heroku强制HTTPS?

使用Azure CDN强制HTTPS

强制Cloudinary URL使用HTTPS

Laravel:如何强制使用HTTPS?

Apache mod_rewrite:在一个子域中强制使用HTTPS,在另一个子域中强制使用HTTP

.htaccess删除www和index.php并强制使用https

使用Angular的默认.htaccess文件强制https://

使用mvc在htaccess中强制使用https显示js和css文件的404错误

使用APACHE REWRITE强制特定目录为HTTPS(.htaccess)

Azure上的静态网站使用htaccess文件强制使用https

mod_rewrite | 删除.php并强制使用https

Git强制使用HTTPS

Laravel 4简单的路由无法使用mod_rewrite和.htaccess

Laravel强制使用Mod Rewrite的HTTPS

强制使用HTTP代替HTTPS

如何使用htaccess / mod_rewrite重写此URL?

将https://subdomain.domain.com的.htaccess mod_rewrite转换为https://www.subdomain.domain.com

使用mod_rewrite htaccess隐藏子文件夹

使用mod_rewrite和htaccess将主域重定向到https,但将所有子域重定向到http

在登录时强制使用https

使用.htaccess重定向Mod_Rewrite URL

如果.htaccess使用mod_rewrite,则取消Apache httpd.conf mod_rewrite

使用 .htaccess 和 mod_rewrite 为来自数据库的结果创建友好 URL

.htaccess 将 HTTP 重定向到 HTTPS,mod_rewrite 不起作用

Codeigniter 上的 HTTPS .htaccess 如何强制使用 SSL?