Apache htaccess重写到www,但子域未按预期工作

Apache htaccess重写到www,但子域未按预期工作,apache,.htaccess,redirect,mod-rewrite,shared-hosting,Apache,.htaccess,Redirect,Mod Rewrite,Shared Hosting,我知道有人问过类似的问题,但同样的代码在两个站点上都有效,而在第三个站点上却没有,所以我想知道应该修改什么和/或检查什么,以找出为什么它在第三个站点上不起作用 需要发生什么:重定向域上的所有请求(1)非https到https,以及(2)所有非www到www。。。除了staging.com子域之外,该子域既不应接收添加到其中的www,也不应接收https #Rewrite http to https RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST}

我知道有人问过类似的问题,但同样的代码在两个站点上都有效,而在第三个站点上却没有,所以我想知道应该修改什么和/或检查什么,以找出为什么它在第三个站点上不起作用

需要发生什么:重定向域上的所有请求(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共享托管站点(“Deluxe Web hosting Linux”)上运行良好,但在第三个站点(即“Deluxe Linux hosting with cPanel”)上运行不好,如果需要的话。(PHP的版本不同,Apache可能不同,但不确定如何检查,因为Apache_get_版本在GoDaddy上不起作用…)

在没有这两个选项的情况下重定向^htaccess中的暂存行:

http://www.staging.___.com/newtest/
https://www.___.com
然后它进入一个无限重定向循环。(“newtest”是GoDaddy控制面板中指定的子域文件夹)

它将使用^htaccess中的暂存行:

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

我是不是遗漏了一些显而易见的东西?

这个答案可能不会帮助未来偶然发现这一页的人,但我认为我应该回答:


htaccess文件中还有很多其他的垃圾;这个网站已经存在很多年了,我最近“继承”了它作为我工作职责的一部分。删除所有这些行之后,暂存重定向现在可以工作了。我仍然看不出到底是什么导致了问题,但无论如何,它是有效的,希望我们不需要任何其他的旧规则。(好吧,我们没有。)

您的第二个
重写规则应该重定向到
https
,否则,您将在任何服务器上得到浪费的双重重定向。这个
.htaccess
文件在哪里?而
staging
子域指向主域文档根目录下的
/newtest
子目录?文件系统路径上是否有其他
.htaccess
文件?在您的示例中,您请求的完整URL是什么?请清除浏览器缓存并测试我的答案