先日のエントリーでも書いたように、CPIのシェアードプランACE01という無制限サーバに絶賛引っ越し中。
意外な落とし穴にハマっております。
→ http://dev.nearly.jp/test
てな感じで、最後にスラッシュが無い状態でアクセスすると、
→ http://www.dev.nearly.jp/test/
てな感じで、www付きアドレスでリダイレクトされちゃうんですわ。
その対策に試行錯誤したモトヲさんの物語です。
Apacheの設定(ServerNameの変更)で済むんだろ?ってな感じなんだけど、とりあえずCPIのサポートに連絡。
んで、回答。
状況として、www付きでリダイレクト(301転送)の動作が
働いてしまいます事は、サーバー仕様となります。
出た。「仕様です」。何度も口にした言葉だけど、人から聞かされるとイラっとする。気をつけよう。
ちなみにCPIサポートとのやり取りで、WebサーバがApache/1.3.41だと判明。まぁいっか。
んで、気をとりなおして、Google先生に聞いてみたところ、.htaccess
で
Options +FollowSymLinksRewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.dev\.nearly\.jp)(:80)? [NC] RewriteRule ^(.*) http://dev.nearly.jp/$1 [R=301,L]
でよかろーもん、という回答。
解決かぁ〜とタバコを一服してみたところ、その下層にあるコンテンツで、別途.htaccess
でmod_rewrite
の設定していると有効にならない事が判明。
フガぁ〜、どうしたもんかなぁとタバコを一服して考えて、リダイレクトしてしまおうと決意。
RedirectMatch 301 ^([^.]*[^/])$ http://dev.nearly.jp$1/
→ dev.nearly.jp/test_ok
うむ、ちゃんと動いた。
けど、2点ほど問題が。
・http://dev.nearly.jp/test
宛にPOSTしても値が受け取れない。リダイレクトされてるんだから当たり前。というか自分で気をつければいいレベル、か?
・dev.nearly.jp/test.okみたいに、ディレクトリ名にドットが入るとアウト。www付きでリダイレクトという元に設定が効いちゃう。RedirectMatch
の正規表現でなんとかなるのかなぁ。というか自分で気をつければいいレベル、か?
いまココ。なんとかならんもんかね。誰か教えて。