Apache1.3とApache2.2におけるRewriteRuleの解釈方法の違い

さくらのレンタルサーバがApache1.3から2.2へバージョンアップされて以降、RewruteRuleが効かなくなってしまったのですが、書き方を微妙に変えたら動くようになりました。

これまで、「http://www.kokoro-navi.com/diary4 へアクセスされたらhttp://www2.kokoro-navi.com/diary4」へ転送するを実現するため、

RewriteRule ^/diary4  http://www2.kokoro-navi.com/diary4 [R=301,L]

のようにしていたのですが、これだとApache2.2は無視してしまうため

RewriteCond %{REQUEST_URI} ^/diary4
RewriteRule ^.*$ http://www2.kokoro-navi.com/diary4 [R=301,L] 

と条件を分けて書いたところちゃんとリダイレクトしてくれるようになりました。

やってること自体は条件を外出ししたくらいで、意味的には変わらないと思うのですが、もしかしてApache2.2だとRewriteCondが必須になったのでしょうか?

でもそれだとRewriteRuleの条件部分って書く必要が全く無い時だってあるでしょうし、却って使い勝手が悪くなったような気がします。

ちなみに色々調べてみたのですが『Apache2.2ではRewriteCondが必須』という記述も見当たらず、正直なところもっと良い書き方がある気がしますが、まぁ動いたから良しとするか・・・。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク