.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リダイレクトが行われていますか?