mod_rewrite サブディレクトリ 効かない | クズリーマンのカス備忘録

mod_rewrite サブディレクトリ 効かない

apache logo Apache
スポンサーリンク

事象

/.htaccess (トップディレクトリに設置)の設定が、下層ディレクトリの、

/sub/index.html のページで効かない。

原因

下層ディレクトリにも .htaccessを設置し、mod_rewriteの記述をしていた。

そうすると、下層ディレクトリの .htaccess > mod_rewrite の設定しか効かない。

 

 

/.htaccess の設定内容で以下2つを設定する

  1. https 矯正リダイレクト(正規化)
  2. 存在しないページの場合、/sub/index.html にリダイレクト

 

/sub/.htaccess の設定内容で以下1つを設定する

  1. 存在しないページの場合、/sub/index.html にリダイレクト

 

そうすると、/sub/  配下には、 3番の設定しか効かない。

 

 

対応

 

以下どっちかで対応する。

  • サブディレクトリにも、上層で設定したmod_rewrite設定を書く
    • 上層に書いた設定と、下層に書いた設定で、設定が重複することになる
  • 上層にまとめて書く。
    • RewriteBase でそれぞれのディレクトリを指定する

 

参考

.htaccess に RewriteRule を書くケースでは、そのサブディレクトリ以下のファイルに適用されるべきルールは、すべての必要な変換を完全に書かなくてはならない。

参考

 

サブディレクトリの.htaccessにはRewriteRuleを書かずに、最上層の.htaccessに記載する事でうまくいきました。

okwave

コメント

タイトルとURLをコピーしました