Apacheのmod_rewriteを使って,移転元URLから新URLへの誘導を行う

URLリライト方式によるURL転送作業

 前回の内容で,kamoland.homeip.net/* への来訪者を,kamoland.no-ip.com のトップページへ誘導する, ということをやったのですが, 独自ドメイン取得により,またまたURLが替わりました.

今度はどうしようか,ということですが,Apacheの知識も増えたので別の方法を使ってみます.

Apacheの拡張モジュールであるmod_rewriteを使うことで,kamoland.no-ip.comへ来た要求を, kamoland.comへの要求に変換してもらいます.


mod_rewriteの導入

 Apacheに,mod_rewriteというモジュールを導入します. 標準でついていると思いますが,通常はオプションをつけてApacheを再コンパイルする必要があります.

コンパイル前のconfigure実行例

$ ./configure --enable-dav \
 --enable-headers \
 --enable-so \
 --enable-rewrite \
 --enable-deflate

今回実際に必要なのは,--enable-rewriteになります. その他は,俺の趣味というか何というか.

この後,いつものようにmake, make installすればokです.


mod_rewriteの設定

httpd.confより抜粋

<VirtualHost kamoland.no-ip.com>
  ServerName kamoland.no-ip.com
  RewriteEngine on
  RewriteRule ^/(.*)  http://kamoland.com/$1 [L,R]
</VirtualHost>

これまで

  • (旧) http://kamoland.no-ip.com

というURLでアクセスしてくれていた人々を,

  • (新) http://kamoland.com

というURLに変換するわけですが,上記のRewriteRuleで実現できます.

VirtualHostセクション(kamoland.no-ip.com)に記述していますので,kamoland.no-ip.comへのリクエストが対象となります.

そして「.*」は全てのURIと一致し,これが括弧で囲まれているので,その内容がパラメータ$1となる. これにより,kamoland.no-ip.com配下へのリクエストが,kamoland.com配下へ転送されるという動作が実現できます.

こいつはなかなかスマートだわさ.


問題発覚 (ロボット君)

 しかしこの方式だと,Googleなどサーチエンジンのロボットが,ページが移転したということを検出できずに, サーチエンジンには古いURLが登録されたままになるという重大な問題があることが,後日判明しました.

そこで,リダイレクトによるURL転送作業が必要になります.


© 2024 KMIソフトウェア