« old

ハイフン入りドメイン名でRewriteCondを使用する

Posted by dab | 2012年10月10日 水曜日 7:03:18 < コンピュータ >

.htaccess、RewriteRuleを使用するURLの書き換えやリダイレクトで、RewriteCondを使用する時に、一般的には以下のようにする。

RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule ^/(.*)$ http://www.example.com/$1

が、ハイフン入りのURLの場合、このRewriteCondが機能しない。

調べてみたら、この話題は結構多かったが、解決策が見つからなかったので、考えてみた。

RewriteEngine on
SetEnv NO_WWW=no
SetEnvIf Host ^wi-wi.jp$ NO_WWW=yes
RewriteCond %{ENV:NO_WWW} yes
RewriteRule (.*) http://www.wi-wi.jp/$1 [R=301,L]

SetEnvを使用してNO_WWW環境変数に登録し、RewriteCondではその環境変数を調べるという方法。
これでうまくいった。

ちなみに

RewriteCond %{ENV:HTTP_HOST} ^wi-wi.jp$

ではダメだった。
たぶん、RewriteCondにハイフンが入る事自体がダメらしい。

RewriteRuleのところで^/(.*)$としていないのは、なぜかこの書き方にするとリダイレクトできなかったから。

TrackBack URI : http://home.wi-wi.jp/blog/wp-trackback.php?p=1256

Leave a comment

:mrgreen: :neutral: :twisted: :shock: :smile: :???: :cool: :evil: :grin: :oops: :razz: :roll: :wink: :cry: :eek: :lol: :mad: :sad:

« old