2010-02-22 73 views
1

我試圖寫一個簡單的規則,以便:mod_rewrite的初學者:映射文件到PHP文件

/page被隱式路由到/page.php。反過來,我想要直接訪問/page.php在地址欄中重定向到/page

目前我有:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

但是,這並不處理第二種情況。我如何修改它?

回答

2

你必須在你的第一條規則之前對待你的第二條規則。試試這個:

RewriteEngine on 
RewriteRule ^(.*)\.php$ http://domain.com/$1/ [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ $1.php 
+0

這似乎工作除了css/js文件(鏈接到像c/main.css和lib/site.js)不加載。 – BobbyB 2010-02-22 19:08:35

+0

我已更新代碼以適應該問題。基本上,如果請求是文件,我會阻止最後一條規則運行。由於PHP文件在上游被阻塞,它們將會被照顧並且它應該按照你的期望工作。 – pixeline 2010-02-22 19:13:00

+0

做了這份工作的乾杯。 – BobbyB 2010-02-22 19:13:09