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 に答える