2014-02-20 117 views
0

如何強制www,刪除尾部斜線,強制非ssl並使用.htaccess刪除.php擴展名?如何強制www,刪除尾部斜線,強制非ssl並使用.htaccess刪除.php擴展名?

我已經嘗試了很多東西,但我得到了500多個內部服務器錯誤。

謝謝。

+0

你能告訴你的代碼,你試過嗎? – anubhava

+0

有十億個類似的問題。先做一個搜索。 –

+0

沒有別的我曾嘗試從以前的問題工作。這就是爲什麼我再次提高它。 – Jamesking56

回答

1

力WWW:

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

刪除斜線:​​

RewriteRule ^(.*)/$ $1 [R=301,L] 

力HTTP:

RewriteCond %{HTTPS} on 
RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [R=301,L] 

關於去除PHP擴展,我不能完全肯定,但你可以試試這個:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/$ %{HTTP_HOST}/$1 [R=301,L] 

RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/ 
RewriteRule ^(.+)\.php$ %{HTTP_HOST}/$1 [R=301,L] 

RewriteRule ^([^/.]+)$ $1.php [L] 

但是,這可能會失敗的目錄。但是因爲我不再使用apache,我只能猜測而不是測試它。


因此,一個組合的解決方案看起來是這樣的:

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. [NC,OR] 
RewriteCond %{HTTPS} on 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/$ %{HTTP_HOST}/$1 [R=301,L] 

RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/ 
RewriteRule ^(.+)\.php$ %{HTTP_HOST}/$1 [R=301,L] 

RewriteRule ^([^/.]+)$ $1.php [L] 
RewriteRule ^(.*)/$ $1 [R=301,L] 
+0

這不起作用。如果我轉到example.dev/about,它會將我重定向到www.example.dev/Users/James/Sites/example/about,這根本就不對。 – Jamesking56

+0

這就是我的意思。我會盡力檢查並解決這個問題。 – user2748261

相關問題