2016-04-20 107 views
0

在我的.htaccess文件中,我已經有一些重寫條件和規則,並且它的工作正常。htaccess文件中的多個重寫規則和條件

現在我需要將「http重定向到https」添加到我的htaccess文件中。

這裏是我的老.htaccess文件:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php [L] 

RewriteRule ^([a-z0-9_-]+)$ pages/$1.php [L] 
RewriteRule ^([a-z0-9_-]+)/([-a-zA-Z0-9_]+)$ pages/$1/$2.php [L] 
RewriteRule ^([a-z0-9_-]+)/([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+)$ pages/$1/$2/$3.php [L] 

我嘗試添加以下代碼文件,但它不正常工作。 例如,如果我將url直接寫入瀏覽器的工作(僅限於www)。但如果點擊我的任何反向鏈接或谷歌搜索結果鏈接,它不起作用。

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

我在哪裏錯了?我應該把代碼放在哪裏?任何幫助都會很棒。謝謝。

+0

請定義**它無法正常工作** – starkeen

+0

我編輯了我的問題Stion的。 – feyyaz

+0

你有404或ssl錯誤嗎? – starkeen

回答

0

您的htaccess看起來是這樣的:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^www\.yoursite\.com [NC] 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L] 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php [L] 

RewriteRule ^([a-z0-9_-]+)$ pages/$1.php [L] 
RewriteRule ^([a-z0-9_-]+)/([-a-zA-Z0-9_]+)$ pages/$1/$2.php [L] 
RewriteRule ^([a-z0-9_-]+)/([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+)$ pages/$1/$2/$3.php [L] 

至少,它爲我工作,在我自己的實現

+0

我從chrome得到「ERR_TOO_MANY_REDIRECTS」錯誤。它不起作用。 – feyyaz

+0

也許這會幫助你:http://htaccess.mwl.be/ –

+0

謝謝你,我已經在使用這個工具。它給了我沒有錯誤,但它不適用於服務器。 – feyyaz

0

您可以使用下面的htaccess:

RewriteEngine on 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}/$1 [NC,R=301,L] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.+)/?$ $1.php [L] 

清除您的瀏覽器的緩存在測試之前

+0

Url更改爲https,但在chrome中拋出「ERR_TOO_MANY_REDIRECTS」錯誤。頁面沒有打開。 – feyyaz

+0

當我看着開發人員工具網絡部分,我看到21 301重定向到相同的網址。這就是爲什麼我有太多的重定向錯誤。 – feyyaz

+0

你有其他規則嗎? – starkeen