什么';Apache重写规则有什么问题?
这是我的什么';Apache重写规则有什么问题?,apache,mod-rewrite,Apache,Mod Rewrite,这是我的.htaccess: RewriteEngine On RewriteRule ^([^/]+)$ /index.php?id=$1 [L] 并且请求不断导致500。您正在进入重写循环。更改如下: RewriteEngine On RewriteCond %{REQUEST_URI} !^/index\.php [NC] RewriteRule ^([^/]+)$ /index.php?id=$1 [QSA,L] 或者像这样(后面应该有相同的效果): 您的错误日志说明了什么?错误日
.htaccess
:
RewriteEngine On
RewriteRule ^([^/]+)$ /index.php?id=$1 [L]
并且请求不断导致500。您正在进入重写循环。更改如下:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/index\.php [NC]
RewriteRule ^([^/]+)$ /index.php?id=$1 [QSA,L]
或者像这样(后面应该有相同的效果):
您的
错误日志
说明了什么?错误日志中说明了什么?由于可能的配置错误,请求超出了10个内部重定向的限制。
如果直接转到/index.php?id=,它工作正常吗?不。/
也有同样的问题。好吧,谢谢,这似乎有效。你能解释一下吗?当然。例如,在Apache重写之后,/help
到/index.php?id=help
将进入下一次重写迭代。在下一次迭代中,它将尝试将/index.php
重写为/index.php?id=index.php
,并再次进行下一次迭代。要停止它,您必须添加一些条件,以防止使用该规则。哦,那么[L]
呢?它不会停止重写过程吗?我提供的规则将#1:仅当文件不是index.php时重写,或#2:仅当请求的资源不存在(不是文件)时重写#一般来说,2更好(但因为我不知道您可能有多少其他规则,所以我提供了解决该问题的mora-than-1方法)。[L]
告诉Apache,如果该规则匹配,则停止重写/匹配其他规则(但只要发生重写,它将进入下一次迭代)——这就是它的工作方式。请参阅以下链接:和
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)$ /index.php?id=$1 [QSA,L]