0

這就是我想要的 -如何配置重寫規則的.htaccess文件以擺脫擴展名,尾部斜線,www?

當有人進入site.com/page.php或site.com/page或site.com/page/時,所有人都應該工作一樣,並且地址欄中顯示的網址應該是site.com/page [我不喜歡擴展名和尾部斜槓]

我也想擺脫從網址欄www,因爲它是不必要的。

這是我目前的.htaccess文件重寫規則 -

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^site\.com 
RewriteRule ^(.*)$ http://www.site.com/$1 [R=permanent,L] 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

這解決了www和擴展的問題,但沒有結尾的斜線一個!

但是,更重要的是,我最近在site.com/blog上安裝了WordPress,但每當我嘗試訪問它時,我都會將其重定向到404頁面。它在我刪除所有重寫時起作用!

我搞砸了我的重寫嗎?我不是一個正則表達忍者!

回答

1

嘗試將以下內容添加到現有.htaccess文件的頂部,並超出任何現有規則WordPress的規則。

RewriteEngine on 
RewriteBase/

#if the host is not site.com, e.g www.site.com 
RewriteCond %{HTTP_HOST} !^site\.com$ [NC] 
#then redirect to site.com e.g to remove the www 
RewriteRule ^(.*)$ http://site.com/$1 [R=301,L] 

#if the URL ends with a slash 
RewriteCond %{REQUEST_URI} ^/(.+)/$ 
#redirect to URL without slash 
RewriteRule . http://site.com/%1 [R=301,L] 

#skip wordpress site which starts with blog 
RewriteCond %{REQUEST_URI} !^/blog [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 
+0

Thanks @Ulrich。我編輯忽略/博客在每個規則,使其工作!否則會導致「太多重定向」。 現在我擁有了一切! :) – 2011-12-15 22:06:24

相關問題