我知道有类似的问题已被提出,但是这个相同的代码在两个网站上运行而不在第三个网站上,所以我正在寻找关于要改变什么和/或要检查什么的想法以找出它为什么不是在第三个网站上工作。
需要发生什么:将域上的所有请求(1)非https重定向到https,(2)将所有非www重定向到www ...除了暂存。 ___.com子域名,既不应该添加www,也不应该https。
#Rewrite http to https
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^staging\.(.+)$ [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]
#Rewrite non-www to www
RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC]
RewriteCond %{HTTP_HOST} !^staging\.(.+)$ [NC]
RewriteRule ^(.*)$ http://www\.%{HTTP_HOST}/$1 [R=301,L]
这在两个GoDaddy共享主机站点(“Deluxe Web Hosting Linux”)上运行良好,但如果重要的话,不在第三个“使用cPanel进行豪华Linux托管”。 (PHP的版本不同,Apache可能不同但不确定如何检查,因为apache_get_version不能在GoDaddy上运行...)
在没有的情况下重定向 htaccess中的两个!^临时行:
http://www.staging.___.com/newtest/
然后它进入无限重定向循环。 (“newtest”是GoDaddy控制面板中指定的子域文件夹)
重定向 WITH htaccess中的!^临时行:
https://www.___.com
我错过了一些明显的东西吗?
答案 0 :(得分:1)
这个答案可能不会帮助那些偶然发现这个页面的人,但我想我应该回答:
htaccess文件中还有很多其他杂项;该网站已存在多年,我最近"继承"这是我工作职责的一部分。删除所有这些行后,暂存重定向现在可以正常工作。我仍然无法确定究竟是什么导致问题,但无论如何,它都有效,希望我们不需要任何其他旧规则。 (AFAIK我们不会。)