Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
htaccess和mod_重写导致apache因缺少文件而失败_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

htaccess和mod_重写导致apache因缺少文件而失败

htaccess和mod_重写导致apache因缺少文件而失败,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,对于一个简单的php站点,我希望有友好的URL。因此,我希望我的URL看起来像: 其中指出: 这很有效!但是,如果我指向一个不在服务器上的文件,apache会出现峰值,我必须强制apache退出(目前使用MAMP在本地开发) 这是我的.htaccess文件。有什么想法吗 RewriteEngine on RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L

对于一个简单的php站点,我希望有友好的URL。因此,我希望我的URL看起来像:

其中指出:

这很有效!但是,如果我指向一个不在服务器上的文件,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

只需颠倒两条规则的顺序,使用L标志而不是N:


apache不喜欢它所需要的文件不存在的情况。如果我指定vhost中不存在的错误日志文件,它甚至不会启动。这也会让我脾气暴躁,但丢失文件是生活的一个因素。apache有没有正确的行为方式?为什么404规则没有生效?谢谢,但我认为这会导致重定向循环?[Sat Jan 29 02:53:48 2011][error][client 127.0.0.1]mod_rewrite:已达到最大内部重定向数。假设配置错误。如果需要,可以使用“RewriteOptions MaxRedirects”来增加限制。太好了,这正是我需要的!
RewriteCond $1 !.*\.php$
RewriteRule ^([^/=]+)/?([^/]*)/?$ $1.php?id=$2 [L,QSA]

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