.htaccess を別のフォルダーにリダイレクトすると、その中の 2 番目の .htaccess がアクティブになりますか?

.htaccess を別のフォルダーにリダイレクトすると、その中の 2 番目の .htaccess がアクティブになりますか?

私の Apache サイトには、次のリダイレクトがあります。

RewriteCond %{REQUEST_URI} !^/web/
RewriteRule ^(.*)$ /web/$1

ルート ディレクトリから「Web」ディレクトリにリダイレクトします。

これはディレクトリの .htaccess でも実行されますか/web/?

答え1

はい、そうです。(.htaccessサブディレクトリのオーバーライドが無効になっていないと仮定します。)

RewriteCond %{REQUEST_URI} !^/web/
RewriteRule ^(.*)$ /web/$1

実際、サブディレクトリ内のファイルに mod_rewrite ディレクティブが含まれている場合、サブディレクトリ内の mod_rewrite ディレクティブは親内のディレクティブを上書きし (デフォルト)、書き換えループを防止するため、ディレクティブは.htaccess必要ありません。RewriteCond

投稿したディレクティブにはLフラグがないため、まず現在のファイルの残りの部分から処理が続行されることに注意してください.htaccess

ちょっとした注意点ですが、これは厳密には「書き換え」であり、「リダイレクト」ではありません。Apacheのドキュメントでは「内部リダイレクト」について言及されていますが、「リダイレクト」は、一般的には外部の3xx リダイレクト。

関連情報