我不太了解.htaccess
文件或Web服务器配置,我一直在试图弄清楚为什么我的网站的index.php
文件被重定向到HTTP版本而不是HTTPS。我已经找了好几天的答案了,但我找不到任何可以解释的东西。
问题是我在.htaccess
文件中有以下规则:
# Do not remove this line, otherwise mod_rewrite rules will stop working
RewriteBase /
RewriteCond %{HTTP_HOST} ^mywebsite\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.mywebsite\.com$
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^index\.php$ "http\:\/\/www\.mywebsite\.com\/" [R=301,L]
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
我的问题是关于这条线:RewriteRule ^index\.php$ "http\:\/\/www\.mywebsite\.com\/" [R=301,L]
。
考虑到我的网站使用HTTPS,将index.php
重定向到HTTP版本是正确的吗?
我担心这条规则是否会引起问题,如果这是预期的行为。我想确定我是否正确地重定向到适当的协议。我在我的日志中得到了很多302状态代码,我想这可能是因为重定向错误,应该是到网站的https版本。
我真的很纠结这个问题,我找不到答案。我不能做太多,因为我担心错误的更改会对网站造成伤害。如果有人能帮我弄明白发生了什么我会很感激的。
1条答案
按热度按时间siotufzp1#
我一直在想为什么我的网站的索引。php文件被重定向到HTTP版本而不是HTTPS。
你在后面的问题中确定“为什么”。..
考虑到我的网站使用HTTPS,重定向索引是否正确。php到HTTP版本,如最后一行所写?
但不,这不是“正确的”,你应该重定向到HTTPS,如果有的话。(回到你身边。..当你的网站在HTTPS上工作时,为什么要重定向到HTTP?这毫无意义,显然是一个错误。**更新:**特别是在下一条规则中,您将重定向到HTTPS!)
我的日志里有很多302状态码
**更新:**根据您更新的问题,您的第二条规则(HTTP到HTTPS重定向)是302(临时)重定向。如果你在第一个规则中重定向到HTTP,那么第二个规则将用第二个重定向来“纠正”这一点!
但是,您不应该在日志中获得“大量”302,因为您首先不应该链接到
/index.php
。(?)仔细看看你的指令。..
该注解可能指的是文件后面出现的
RewriteEngine On
行?这里不需要RewriteBase
指令(它没有被使用),应该删除。既然你说(在评论中)你只有一个域,那么这两个条件是不需要的。
这些条件由cPanel自动添加。然而,在第一条规则中,它们不是必需的,并且可以移除。(如果请求的URL是
/index.php
,那么该URL显然不会是这些URL中的一个-因此条件是无意义的。但就像我说的,这些条件是盲目地加在每一条规则之前的--真的有点乱。)最后一条规则中缺少
R=301
和L
标志。因此,这默认为302(临时)重定向。它应该是301(永久)重定向。总之,你的规则可以写得更简单,如下所示:
我在HTTPtoHTTPS(second)规则中使用了更宽泛的方法,排除了指向
/.well-known
子目录的所有URL。(尽管cPanel可能会在SSL证书自动续订时重新添加这些条件!)不需要在 substitution 字符串中使用所有反斜杠转义符(这是典型的cPanel)。
请注意,这并不规范化www vs non-www。这是留给读者的练习。