我为我的网站购买了 EV 证书
,并且我试图在用户输入时强制使用 HTTPS:
- mycoolwebsite.com
- www.mycoolwebsite.com
- > http://mycoolwebsite.com
- > http://www.mycoolwebsite.com
目前我的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
, 然后 E
到 F
。
如果任何规则以 [L]
(“最后”)结尾,这意味着如果 [L]
规则匹配,则将忽略所有后续规则。
在您的情况下,您有一些这样的规则,这些规则首先被检查并适用,因此您的 HTTPS 重定向不会被评估。
把这样的基本规则放在第一位。对于每个传入的 HTTP 请求,您希望首先询问“我们说的是正确的协议(protocol)吗?”,并在必要时修复该问题,然后再继续检查更深入的规则并进行内部重写。
关于.htaccess - 在站点的所有页面上强制使用 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33255053/