
私の 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 リダイレクト。