2010年11月26日金曜日

apacheのrewriteでドメイン変更に対応する

どうも、俺@仕事中です。

今日はタイトルの通り、apacheのmod_rewriteを使ってサイトのドメイン変更に対応する方法についてメモめも。
さらにそのサイトは「*(ワイルドカード)」によるサブドメイン設定がされておりその対応もしなければなりません。

ドメインは
old.jp → new.jp に変更するものとします。
DNSゾーン設定は以下のような感じで
1.2.3.4は仮のサーバIPのつもり
@ IN A 1.2.3.4
* IN A 1.2.3.4


つまり
old.jpでアクセスのあったものはnew.jpにリライトし
foo.old.jpでアクセスのあったものはfoo.new.jpにリライトしたいのです。

apacheのRewriteモジュールはインストールしておいてね。


では設定方法について
# vim /usr/local/apache2/conf/httpd.conf
--------------------------------------------
1 RewriteEngine On
2 Rewrite Cond %{HTTP_HOST} ^(.*)old\.jp [NC]
3 RewriteRule ^(.*)$ http://%1new.jp$1 [R=301,L]
これでapache再起動でOKです。
正規表現はかなり適当なので実運用する場合はも少し丁寧に書いたほうが良いと思います。

ポイントは3行目の
^(.*)$ http://%1new.jp$1
の部分です。
「%1」は2行目のRewriteCondeで設定した正規表現の文字グループを後方参照する場合に使えます。
もちろん複数ある場合は %2,%3..とつづきます。

これで完成ーばんざあぁぁぁぁぁあぃ!

0 件のコメント: