哪个优先:读取.htaccess或301重定向?

时间:2012-09-07 11:09:19

标签: .htaccess redirect

我的.htaccess文件中有以下几行:

    #redirect A
    RewriteCond %{DOCUMENT_ROOT}/partners/$1/index.shtml -f
    RewriteRule ^(.*) /partners/$1/ [R=301,L]

这些行检查目录是否存在,并重定向用户(如果存在)。

    #redirect B
    RewriteCond %{DOCUMENT_ROOT}/partners/$1/index.shtml !-f
    RewriteRule ^(.*) /partners/default.php?code=$1 [R=301,L]

同样,这些行检查目录是否不存在,如果找不到目录,则将用户重定向到其他位置。

以下是发生的事情:说我访问www.example.com/andyf并且andyf目录中不存在partners文件夹,然后我被带到www.example.com/partners/default.php?code=andyf

到目前为止,非常好。

但是,如果稍后创建andyf目录,我仍然会进入default.php页面,即使现在存在正确的目录。这取决于已经实施的301重定向。

令我困惑的是,如果.htaccess文件是read on every request那么为什么不重定向A覆盖重定向B?或者,我怀疑,在读取.htaccess文件之前,301重定向是否正在发生?

1 个答案:

答案 0 :(得分:1)

似乎只是缓存问题,如果清除缓存,它将按预期工作。