6

ルートディレクトリに「folder1」という名前のフォルダーがあります

www.domain.com/ www.domain.com/folder1

404 エラーになる www.domain.com へのすべての要求を folder1 にリダイレクトする必要があります。そのようです:

www.domain.com/a_file.txt

a_file.txt が存在しない場合は、folder1 を調べます。

www.domain.com/folder1/a_file.txt

次のように、サブディレクトリに対しても同じように機能させたいと思います。

www.domain.com/a_folder (ルートに存在しない場合はリダイレクト)

www.domain.com/folder1/a_folder

RewriteCond %{REQUEST_FILE} !-f を使用する必要があることはわかっていますが、理解できないようです。

4

1 に答える 1

18
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/folder1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) folder1/$1 [L,R]
  • 最初の rewrite-cond により、ループしないことが保証されます (ファイルが folder1 内に存在しない場合)
  • 2番目のものは、ターゲットがファイルではないことを確認します
  • 三つ目 - フォルダでもないこと
  • 最後に、URL を書き換えます。Lフラグは、これが最後に適用されたルールであることを意味し (その後にルールがある場合でも)、Rリダイレクトを意味します。QSA元のURLに渡されたクエリ文字列パラメーターを新しいURLに送信する場合は、フラグを追加することもできます
于 2012-06-18T07:56:47.713 に答える