質問: .htaccessでのrewriteruleが下層ディレクトリに効かない 現在一番上の階層にドメインを適用しており、そこでwww有りと無しを統一する為、.htaccessに以下のように記述しています。 rewriteengine on rewritecond %{http_host} ^(www\.example\.com)(:80)? rewriterule ^(.*) http://example.com/$1 [r=301,l] これで、http://www.example.com/ は http://example.com へ、 下層ディレクトリの http://www.example.com/sample/ は http://example.com/sample/ と、 上記のようにリダイレクトしてくれますが、下層ディレクトリの中に掲示板スクリプトを設置しているものがありまして、 そのディレクトリ(/bbs)の中にも、スクリプトのurl書き換えの為のrewriteruleを記述した.htaccessを設置しています。 ※このディレクトリ(/bbs)のrewriteruleには、rewritecond %{http_host} は記述していません。 ここで困った事に、http://www.example.com/bbs/ にアクセスすると、そのままwwwが付いたurlがそのままアドレスバーに表示され、 www無し(http://example.com/bbs/)にリダイレクトしてくれません。 .htaccessを設置していない(rewriteruleを記述していない)下層ディレクトリは、上層ディレクトリに記述しているrewriteruleの継承をしてくれる為、http://example.com/sample/ のように表示(リダイレクト)されますが、上記の/bbs ディレクトリなどに対しても、上層のrewriterule を引き継げる方法は無いでしょうか? 色々調べて、rewriteoptions inherit というのも見つけたのですが、/bbs ディレクトリの.htaccessに記述しても、 トップページ(http://example.com/)へリダイレクトされてしまい、どうすれば良いか悩んでおります。 環境は共用レンタルサーバで、 apacheのバージョンは1.3.39 (unix)。 httpd.confは自分では設定する事が出来ません。 上層ディレクトリのrewriteruleを引き継げない場合、/bbs ディレクトリの.htaccessにはどのように記述すれば www無し(http://example.com/bbs/)になるのかでも勿論構いません。 もし良い方法がありましたらご教示頂けますと幸いです。 宜しくお願いいたします。
回答: rewriteのサブディレクトリとの関係については http://www.nurs.or.jp/~sug/homep/rewrite/rewrite15.htm#sec3 が参考になるかと思います。 http://oshiete1.goo.ne.jp/qa4083790.html にも同様の質問が有りますが 私の環境でtestして回答したものの質問者さんのほうではうまくいっていない様子、、