2017-07-12 46 views
0

所以我遇到了.htaccess文件的問題。這是我的代碼:https://example.com使用mod_rewrite重定向到一個錯誤的網址

RewriteEngine On 

RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

它首先重定向非WWW到www,然後從非HTTPS到HTTPS,但它有一個問題,去的時候:

https://example.com 

即:以https但不www它重定向到一個巨大的鏈接,如:

https://www.example.com/home/c3238912/public_html/httpss://www.example.com/home/c3238912/public_html/httpss://www.example.com/home/c3238912/public_html/httpss://www.example.com/home/c3238912/public_html/ 

這怎麼可能?

回答

0

您是否在您的https重定向中複製s,但忘記在此提及它?

您的示例在重定向路徑中顯示httpss。這樣的錯字會導致此問題,因爲httpss協議不存在,所以它被視爲路徑,因此是無限重定向。

我的理解是你真正的規則是:

RewriteRule ^(.*)$ httpss://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

刪除多餘的s,酷似告訴你它是你的問題。 如果您之前有錯別字,但已更正錯誤,請確保清空緩存。重定向緩存了

0

在我看來,它正在多次運行你的第二次重定向。您可以將它們連接起來,而不是讓您的規則分裂,希望修復多個重定向。

嘗試使用:

RewriteCond %{HTTPS} !=on [OR] 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302] 

我已經改變了R標誌302,這使得用於測試的臨時重定向。如果您發現此規則有效,請將其更改回301以進行永久性重定向。

確保在測試之前清除緩存。

相關問題