2013-04-11 79 views
1

我現在有一個看起來像這樣的URL:如何刪除PHP擴展和在特定的文件夾添加結尾斜槓用的.htaccess

www.mysite.com/folder-name/page-name.php 

,但我需要它看起來像這樣:

www.mysite.com/folder-name/page-name/ 

對於變爲「文件夾名稱」和目標僅是在文件夾中的.htaccess正則表達式後,我,它需要刪除PHP擴展和重定向到URL用在結尾的斜線結束。

此外,如果URL是www.mysite.com/folder-name/我需要被忽略的表達,以避免在端部具有//。我看了一下,但找不到一個特定文件夾的解決方案。剛剛開始使用PHP和正則表達式正在吹捧我的心!

我發現這樣的代碼:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+.php 
RewriteRule (.*).php$ /$1/ [L,R=301] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*)/$ $1.php [L] 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule .*[^/]$ $0/ [L,R=301] 

但它返回的URL對這座:

www.mysite.com/var/www/vhosts/mysite.com/httpdocs/folder_name/page_name/ 
+0

RewriteEngine敘述在 的RewriteCond%{REQUEST_FILENAME} -f 重寫規則^([^ \] +)$ $ 1.php [NC,L] 我可以用這個去除.php。只是不知道如何添加斜槓 – user2136584 2013-04-11 08:12:53

回答

0

爲什麼你越來越喜歡這條道路的原因是因爲Apache是​​猜測是否您規則的目標($0/)是文件路徑或URL路徑,並且它錯誤地猜測它是文件路徑。您需要可以提供一個重寫的基礎:

RewriteBase/

或讓你的目標絕對URI的

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

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule .*[^/]$ /$0/ [L,R=301] 
+0

輝煌,有沒有一種方法來RewriteBase不作爲根/ /但在一個文件夾中的一個層次下,這不是絕對的? – user2136584 2013-04-11 13:06:30

+0

@ user2136584不確定你的意思,baes基本上是在你的主機名後面出現在'http:// hostname.com'中,所以'/'表示'http:// hostname.com /'和/ foo /'表示'HTTP:// hostname.com /富/' – 2013-04-11 16:57:08

相關問題