htaccess重写为www,除了子域没有按预期工作

问题描述:

我知道类似的问题已经被问到,但这个相同的代码在两个网站上工作,并没有三分之一,所以我正在寻找想要改变和/或者要弄清楚为什么它不能在第三个网站上工作。htaccess重写为www,除了子域没有按预期工作

什么需要发生:重定向域(1)非https的所有请求到https,以及(2)所有非www到www ...除staging.___.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的精细共同主办的网站(“豪华虚拟主机的Linux”),而不是在第三这是对“豪华Linux中的cPanel主机”,如果该事项。 (PHP的版本不同,Apache可能是不同的,但不知道如何检查,因为apache_get_version不会对GoDaddy的工作...)

凡重定向没有两个!^分期htaccess的线:

http://www.staging.___.com/newtest/ 

然后它进入无限重定向循环。 (“newtest”是GoDaddy的控制面板中指定的子域文件夹)

凡带重定向的^在htaccess的分期行:

https://www.___.com 

我失去了一些东西明显?

+0

你的第二个'RewriteRule'应该重定向到'https',否则,你会在任何服务器上浪费双重重定向。这个'.htaccess'文件位于何处? 'staging'子域指向主域的文档根目录下的'/ newtest'子目录?文件系统路径中是否还有其他'.htaccess'文件?在您的示例中,您要求的完整网址是什么? – MrWhite

+0

请清除您的浏览器缓存并测试我的答案 –

这个答案可能不会帮助在此页面绊倒谁将来的人,但认为我应该反正回答:

有很多在htaccess文件其他杂项的废话;该网站已经存在了很多年,最近我“继承了”它作为我工作职责的一部分。删除所有这些行后,暂存重定向现在可以工作。我仍然不知道究竟是什么原因会导致一个问题,但无论如何,它是有效的,并希望我们不需要任何其他旧规则。 (AFAIK我们没有。)