.htaccess - 在站点的所有页面上强制使用 SSL

标签 .htaccess ssl

我为我的网站购买了 EV 证书,并且我试图在用户输入时强制使用 HTTPS:

目前我的htaccess 文件中有这段代码:

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

但是,它似乎并没有正常工作。它只会在我的主页上强制使用 SSL,而不会在网站上的其他页面上强制使用 SSL。

我做了一些研究并找到了这段代码:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

我想知道它们在做同样的事情吗?

最佳答案

重写规则按照它们编写的顺序进行评估。

RewriteRule A B
RewriteRule C D
RewriteRule E F

对于每个传入的 HTTP 请求,这将首先将 A 重写为 B,然后将 C 重写为 D , 然后 EF

如果任何规则以 [L](“最后”)结尾,这意味着如果 [L] 规则匹配,则将忽略所有后续规则。

在您的情况下,您有一些这样的规则,这些规则首先被检查并适用,因此您的 HTTPS 重定向不会被评估。

把这样的基本规则放在第一位。对于每个传入的 HTTP 请求,您希望首先询问“我们说的是正确的协议(protocol)吗?”,并在必要时修复该问题,然后再继续检查更深入的规则并进行内部重写。

关于.htaccess - 在站点的所有页面上强制使用 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33255053/

相关文章:

.htaccess - htaccess 选项 -Indexes 有什么用?

c++ - 关闭 boost asio ssl 套接字时需要调用 ssl::stream::shutdown 吗?

上传到 pantheon 服务器时 .htaccess 在 drupal 7 上不起作用

.htaccess 规则,在 url 中重写 key

css - CakePHP3 - 将 git 推送到服务器后 CSS 和 JS 未加载

ssl - ARM 上基于 libpurple 的连接尝试错误 "SSL peer presented an invalid certificate"

java - 如何在 Java6 中禁用约束检查(Netscape 证书类型)?

.htaccess - 301 将所有没有扩展名的文件重定向到 .html 扩展名

node.js - 如何连接到 Node JS 中的 EPP 服务器(域名注册中心)?

ssl - syslog-ng 无法通过 tls 发送日志 - 握手错误