2010-11-19 148 views
0

我正在名爲testsite的目錄中工作,我希望所有.php擴展名都被尾部斜線替代。我在那裏,在那裏(例如)輸入http://mydomain.com/testsite/about意味着http://mydomain.com/testsite/about.php被加載。使用Apache向URL添加尾部斜槓

但是,我現在要將網址顯示爲./about/,以便在搜索引擎排名中只顯示一個版本。

這裏是我的.htaccess:

RewriteEngine On 
RewriteBase /testsite/ 
RewriteRule ^()$ index.php [NC,L] 
RewriteCond %{REQUEST_URI} !(^/?.*\..*$) [NC] 
RewriteRule (.*)$ $1.php [NC] 

而且,是有可能保存(和顯示隱藏我傳遞任何參數)?

所有幫助非常感謝!

回答

1

嘗試下列規則:

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule .*[^/]$ %{REQUEST_URI}/ [L,R=301] 
RewriteRule ^$ index.php [L] 
RewriteRule (.*)/$ $1.php [NC] 
+0

嗨Gumbo。謝謝你。我試過這個,但是它似乎在./about(給./about%25)之類的url結尾添加了%25,並且它在./about%25%25%25的循環中丟失了。 。當我把./about/放在地址欄中。我認爲它幾乎在那裏,但不完全。 – user114671 2010-11-19 16:35:58

+0

@Outerbridge Mike:抱歉,錯誤的字符。 – Gumbo 2010-11-19 16:55:04

+0

嗨Gumbo。感謝您的幫助。它越來越近了。如果我去./關於它正確地把./about/ in作爲url,但是頁面顯示沒有加載CSS?!?如果我然後點擊一個鏈接,說./contact-us/它堅持與./about/contact-us.php.php.php.php.php.php!它幾乎是正確的,所以今天晚些時候我會有更多時間看看。再次感謝。 – user114671 2010-11-20 08:49:56

0

嘗試將最後規則:

RewriteRule (.*)$ $1.php [NC] [E=ORIGINAL_URL:$1] 
+0

大衛你好。不幸的是我仍然得到和以前一樣的結果。 E =部分是做什麼的?感謝Mike – user114671 2010-11-19 16:27:26

+0

E或env是一個環境變量,請查閱http://httpd.apache.org/docs/2.2/env.html獲取更多詳細信息。在上面的例子中,即使進行了重寫,原始URL也會被保留。 – 2010-11-21 14:36:04