意外的mod_rewrite行为

时间:2011-06-04 09:34:54

标签: apache mod-rewrite

我有一个 .htaccess 文件(仅)以下几行:

RewriteEngine on
RewriteRule (.*)/[^/]+\.txt$ a.html [L]

这样做的目的是将每个网址重定向到当前目录下方的一个目录,并以.txt结尾。

我有两个额外的文件(每个文件包含一行文字用于识别):

  • a.html
  • 存在

我有没有名为不存在的文件

  • 当我请求nonexistent/some.txt时,我会收到a.html的内容,因为预计
  • 当我请求existent/some.txt时,我会收到a.html的内容,因为预计
  • 当我请求a.html/some.txt时,我收到404错误意外

Nothe我没有启用dontent-negotiation。要证明这一点:existent/some.html返回404。

我对这种行为感到非常困惑,我想知道这里的原理是什么。

1 个答案:

答案 0 :(得分:0)

也许加入(未经测试):

RewriteCond ${REQUEST_URI} !/?a\.html