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 この後,いつものように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>
というURLでアクセスしてくれていた人々を,
というURLに変換するわけですが,上記のRewriteRuleで実現できます. VirtualHostセクション(kamoland.no-ip.com)に記述していますので,kamoland.no-ip.comへのリクエストが対象となります. そして「.*」は全てのURIと一致し,これが括弧で囲まれているので,その内容がパラメータ$1となる. これにより,kamoland.no-ip.com配下へのリクエストが,kamoland.com配下へ転送されるという動作が実現できます. こいつはなかなかスマートだわさ.
問題発覚 (ロボット君)しかしこの方式だと,Googleなどサーチエンジンのロボットが,ページが移転したということを検出できずに, サーチエンジンには古いURLが登録されたままになるという重大な問題があることが,後日判明しました.そこで,リダイレクトによるURL転送作業が必要になります. |