1

我的 .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 文件,那么为什么重定向 A 不覆盖重定向 B?还是像我怀疑的那样,在读取 .htaccess 文件之前发生了 301 重定向?

4

1 回答 1

1

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

于 2012-09-08T10:04:23.537 回答