2017-10-04 124 views
0

我知道類似的問題已經被問到,但這個相同的代碼在兩個網站上工作,並沒有三分之一,所以我正在尋找想要改變和/或者要弄清楚爲什麼它不能在第三個網站上工作。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

請清除您的瀏覽器緩存並測試我的答案 –

回答

1

這個答案可能不會幫助在此頁面絆倒誰將來的人,但認爲我應該反正回答:

有很多在htaccess文件其他雜項的廢話;該網站已經存在了很多年,最近我「繼承了」它作爲我工作職責的一部分。刪除所有這些行後,暫存重定向現在可以工作。我仍然不知道究竟是什麼原因會導致一個問題,但無論如何,它是有效的,並希望我們不需要任何其他舊規則。 (AFAIK我們沒有。)