18

虽然我可以打开 Rewrite Logging 并弄乱这条规则来弄清楚它的作用(如果有的话),但我敢打赌有人已经知道了。这是规则本身:

RewriteRule ^ - [L]

这是在上下文中:

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

我猜它的意思是“匹配一切”。我原以为“匹配所有内容”将是一个点,以使没有丢失的代码更加明显,并且如果插入符号是其中唯一的东西,则该正则表达式会出错。所以我看到了外部机会,它意味着别的东西。

4

1 回答 1

23
  • ^正如你所说,“匹配任何东西”是一种有点非正统的说法
  • -意思是“不采取行动”
  • [L]RewriteRules表示“最后一条规则”,即在此之后停止处理

我假设在这条规则之后还有其他规则,因为RewriteCond/的这种组合RewriteRule表示如果当前请求是针对现有文件或目录的,mod_rewrite则应忽略任何后续RewriteRules的 .


用代码表示,这相当于:

do_rewrites(req)
{
  if (is_file(req) || is_dir(req))
    return;

  // other rules
  ...
}
于 2013-06-25T21:27:49.817 回答