当前位置: 首页 > 面试题库 >

使用.htaccess和mod_rewrite强制SSL / https

尚鸿才
2023-03-14
问题内容

如何使用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]

或在

  • http://www.askapache.com/htaccess/http-https-rewriterule-redirect.html

如果您的提供者禁用了.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();
    }
}


 类似资料:
  • 我的.htaccess中有这段代码,我需要转换到microsoft azure主机,因为它不起作用。 有人能帮我吗?谢谢各位

  • 问题内容: 我正在编写一个小型CMS,以更好地了解它们的工作方式并学习有关PHP的一些新知识。但是,我遇到了一个问题。 我想使用mod_rewrite(尽管如果有人有更好的解决方案,我会尝试使用它)来生成漂亮的干净URL,所以site.com/index.php?page=2可以改为site.com/tools 据我了解,每次添加新页面时,我都需要更改.htaccess文件,这是我遇到问题的地方,

  • 问题内容: 我没有运气让我的.htaccess与mod_rewrite一起工作。基本上,我要做的就是从“ http://www.example.com ”和“ https://www.example.com ”中删除“ www ”。 如果我缺少任何内容(conf文件等,请通知我,我将对此进行更新) 这是我的.htaccess文件(位于@ / var / www / site / trunk / h

  • 我看到这篇文章给出了使用WebClient将文件上传到ftp的简单想法。这很简单,但如何强制它使用SSL?

  • 问题内容: 我正在运行没有代理并且使用SSL的node.js express 3服务器。 我试图弄清楚如何强制所有连接通过https。 Google搜索向我显示了这一点: https://groups.google.com/forum/#!topic/express- js/Bm6yozgoDSY 当前没有办法强制执行https重定向,尽管这似乎有点奇怪。我们有一个仅使用https的应用程序,并且

  • 问题内容: 好的,我一直在遇到aws或某些问题,以至于我似乎无法使mod_rewrite正常工作。 仅出于测试目的,我做了以下工作: 1使用AWS控制台从向导部署新的AMI 64位实例 2百胜装的apache 3编辑了/etc/httpd/conf/httpd.conf: 好像 4确保 在文件中且未注释。 5重启apache: 6创建了两个新文件: 包含: 包含: 7.创建文件: 包含(共TOTA