htaccess和mod_rewrite导致apache失败并丢失文件

时间:2011-01-29 05:22:47

标签: apache .htaccess mod-rewrite

对于一个简单的php网站,我想拥有友好的URL。所以我希望我的网址看起来像:

http://mysite.com/page/123

指向:

http://mysite.com/page.php?id=123

这有效!但是,如果我指向一个不在服务器上的文件,apache会出现问题,我必须强制Apache退出(现在使用MAMP进行本地开发)。

这是我的.htaccess文件。有什么想法吗?

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} -f  [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^([^/=]+)/?([^/]*)/?$ $1.php?id=$2 [N,QSA]

ErrorDocument 404 /404.php

1 个答案:

答案 0 :(得分:1)

只需颠倒两条规则的顺序,然后使用 L 标志代替 N

RewriteCond $1 !.*\.php$
RewriteRule ^([^/=]+)/?([^/]*)/?$ $1.php?id=$2 [L,QSA]

RewriteCond %{REQUEST_FILENAME} -f  [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]