2011-01-29 39 views
3

对于一个简单的php网站,我想要有友好的网址。所以,我想我的网址看起来像:htaccess和mod_rewrite导致apache失败,丢失文件

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 
+0

Apache不喜欢它的时候,它需要的文件不存在。如果我指定虚拟主机中不存在的错误日志文件,它甚至不会启动。 – Endophage 2011-01-29 05:31:28

+0

它也使我脾气暴躁,但缺少文件是生活的一部分。有没有办法让apache正确行为? 404规则为什么不踢? – Corey 2011-01-29 06:13:26

回答

1

只是扭转你的两个规则的顺序和使用大号标志,而不是ñ

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

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