2016-08-13 157 views
0

我需要你的幫助。 假設這是我的網站:example.com.htaccess帶URL重寫的SSL重定向

我想將http重定向到https。 此外,我還想重寫網址。 如果我訪問網站:

https://example.com/new一切工作正常。

如果我訪問該網站: http://www.example.com/new它重定向到https,但不會重寫URL。結果是這樣的:

`https://example.com/old` 


RewriteEngine on 

RewriteRule ^new/(.*)$ old/$1 [L,QSA] 

RewriteCond %{HTTPS} =off [NC,OR] 
RewriteCond %{HTTP_HOST} ^example.com [NC,OR] 
RewriteCond %{HTTP_HOST} ^www.example.com [NC,OR] 
RewriteCond %{HTTP_HOST} ^www.example.com [NC] 
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301,NC] 

我試圖把規則以另一種順序,但這根本不工作。

我希望你能幫助我。非常感謝:)

+0

切換您的規則的順序。 – hjpotter92

回答

0

如果你只是想刪除www,你只需要這個。

RewriteEngine on 

RewriteCond %{HTTPS} ^off [OR] 
RewriteCond %{HTTP_HOST} !^example\.com [NC] 
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301,NC] 

RewriteRule ^new/(.*)$ old/$1 [L,QSA] 
+0

我已經使用您的代碼,現在工作正常。非常感謝! :) – rufsam

0

規則

RewriteRule ^new/(.*)$ old/$1 [L,QSA] 

被配置爲L(最後一個),因此它不再處理一旦它匹配的其他規則。

您需要切換規則的順序。在提到的規則之前添加HTTPS重定向之前

+0

感謝您的anwser!我曾嘗試在其他規則下放置RewriteRule^new /(.*)$ old/$ 1 [L,QSA],但它不起作用。 – rufsam