2013-09-01 29 views
0

所以我有一個網站,我想通過使用mod_rewrite使搜索引擎優化友好。我想通過將.php放在最後,並使用mod_rewrite稍後重新添加它們來使URL容易記住。因此,例如說http://example.com/about將指向http://example.com/about.php。我有RewriteRule應該從我的經驗,但出於某種原因不工作。Apache2 mod_rewrite模式限制?

我的規則:

RewriteEngine On 
RewriteRule ^/?about$ about.php [L] 
RewriteRule ^/?faq$ faq.php [L] 

現在這些規則不一樣,正好工作。似乎如果我將這些文件重命名爲blah.about.php和blah.faq.php並將RewriteRule行更改爲反映它的新文件名。

這是模式不能如此接近目標文件的mod_rewrite的限制嗎?

+0

讓我知道如果我的答案解決您的問題 – Prix

回答

1

試試這個:

Options +FollowSymLinks -MultiViews 

RewriteEngine On 
RewriteBase/

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.*)\.php [NC] 
RewriteRule^/%1 [R=301,QSA,L] 

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

第一條規則重定向到phpless頁面和內部旁邊的PHP文件本身的要求。

這是模式不能如此接近目標文件的mod_rewrite的限制嗎?

它不是一個真正的限制,你就不能PHP文件重定向到非PHP,然後返回到它,因爲它產生一個循環,所以我們要做的就是捕捉請求,並從那裏,然後重定向內部重定向到文件。

除非你看到他們有不同的命名。