什么导致这个完全离奇的行为与mod_rewrite?

这是我的规则:

RewriteRule ^user/(\d+)$ rewrite.php?id=$1 

这个redirect,但是$_GET['id']没有被设置。 如果我将上述规则更改为:

 RewriteRule ^anything/(\d+)$ rewrite.php?id=$1 

有用。 为什么一个工作,而不是另一个?

以下是更多信息:

  • 没有名为user目录
  • 层次结构中唯一的其他.htaccess文件是空白的。
  • anything都可以被user以外的东西取代。

更新:我检查了rewritelog ,它是空的。

我终于find了问题的原因…显然(如果你有一个文件(在这种情况下,PHP) 与第一个虚拟目录重写规则不工作。 (redirect循环,缺less参数等)

例如,以下规则:

 #RewriteRule ^user/(\d+)$ user.php?id=$1 [L] 

如果在PHP文件所在的同一目录下有一个名为user.php的文件,将会出现故障。