0

専門家のアドバイスを利用できる、少し複雑な書き直しシナリオがあります。いくつかのファイルを含むディレクトリ "/directory" があります。そのディレクトリに存在しないファイルに対する要求を、別のディレクトリにも存在するように書き換えて、元のディレクトリを URL に保持し、無効なパスに対して 404 を返したいと考えています。例

これが存在します:

/directory/file.php

これは存在しません:

/directory/subdirectory/anotherfile.php

...しかし、ここには存在します:

/another_directory/subdirectory/anotherfile.php

だから私はしたいです

/directory/subdirectory/anotherfile.php to refer to /another_directory/subdirectory/anotherfile.php

...しかし、フォルダー/ファイルが /another_directory/ に存在しない場合、ルールは 404 を返す必要があります。

さまざまな組み合わせを試しましたが、どれも 404 を返さないか、リダイレクトします。これは私の最新の試みです:

RewriteCond %{DOCUMENT_ROOT}/another_directory/$1 f [OR] 
RewriteCond %{DOCUMENT_ROOT}/another_directory/$1 d 
RewriteRule (.*) - [S=1]
RewriteRule ^directory/(.*)$ /another_directory/$1 [L, QSA]

なぜ私がこのシナリオを持っているのかを説明するのに役立つなら、 /another_directory/ は /directory/ の既存のファイルと同じディレクトリにあるように見える定期的に再生成された静的ファイルでいっぱいです私のSERPを台無しにしたくないし、この大量の生成されたファイルを他のファイルから隔離したい.

4

1 に答える 1

1

あなたの説明から私が理解したのは次のとおりです。

/directory/subdirectory/anotherfile.php

これは次のように書き換える必要があります。

/another_directory/subdirectory/anotherfile.php

存在するかどうか。私が正しければ、これがあなたの答えです。そうでなければ、もっと教えてください!

RewriteCond %{DOCUMENT_ROOT}/another_directory/$1 -f [OR] 
RewriteCond %{DOCUMENT_ROOT}/another_directory/$1 -d 
RewriteRule ^directory/(.*) another_directory/$1 [L,S=1]

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule (.*)  - [L]
RewriteRule (.*)   404.php?uri=/$1&id=1 [L]
于 2012-10-25T00:59:44.700 に答える