2010-02-22 79 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