ApacheのRedirect(mod_alias)を使って,移転元URLから新URLへの誘導を行う

リダイレクトによるURL転送作業 (Robot対策)

Redirectを使ってステータス301を返すべし

 前回のmod_rewriteを使った転送方法だと,ページが移転したのにサーチエンジンに登録されてるURLには反映されない, という恐ろしい事態になってしまうことが判明しました. というか,Googleで実際そうなってしまいました.
(この検索結果の11/1現在No.2が, kamoland.no-ip.comのままになっています.)

サーチエンジンは重要なので,これは対策しとかないとまずい.

どうすればいいかなと,GoogleのサイトでWeb管理者向け資料を漁ってみると,「URL を変更する予定ですが、順位を維持する方法がありますか?」 に,

新しいサイトが完成したら、古いサイトにアクセスしてきた人やサーチ エンジンにサイトの移転を知らせるため、(HTTP ヘッダーに "301" コードを 追加して) 古いサイトからリダイレクトする方法もあります。

という記述がありました.

そこで今回は,ステータスコード301(Moved Permanently)を返すことで, ロボットにきちんと移転したことを通知できるような方法で,やってみることにします.

最初からこれをやっとくべきだったんだな.トホホ...

具体的には,mod_aliasのRedirectを使えば良いことが,Apacheのリファレンスを調べて判明した.


ファイル単位の転送

 用途としては,テスト用のファイルに張ってもらったリンクを, 正式なファイル名に変更してもらうのが億劫な場合とか.

httpd.confより抜粋

Redirect permanent /game/rensa_test01.html http://kamoland.com/game/rensa.html

http://kamoland.com/game/rensa_test01.html (廃止して存在しないけど外からリンクが張られているファイル)
 ↓
http://kamoland.com/game/rensa.html (存在するファイル)

permanentを指定しているので,ステータス301が返る.

他の値も指定できますが,詳しくはApacheのマニュアル-mod_aliasRFC2616-HTTP/1.1参照.


ホスト(ドメイン)単位の転送

 これはまさに今回のように,ドメインが変わったけどディレクトリやファイル構成は変わっていない, という場合です.

httpd.confより抜粋

<VirtualHost kamoland.no-ip.com>
  ServerName kamoland.no-ip.com
  Redirect permanent / http://kamoland.com/
</VirtualHost>

http://kamoland.no-ip.com/[ディレクトリ名,ファイル名] (廃止する予定のドメイン)
 ↓
http://kamoland.com/[ディレクトリ名,ファイル名] (今後使うドメイン)

廃止予定ドメインへのrequestをVirtualHostで受けて,新しいドメインにリダイレクトします.

なので当然,廃止予定ドメインを,新しいドメインと同じIPアドレスを指す状態で残しておかないと機能しません.


ホスト(ドメイン)を廃止するタイミング

 それでは,廃止する予定のドメインを実際に廃止できるのは,一体いつになるか?

理想を言えば,

  • ロボット
  • その他の他者によるリンク元ページ (完全な把握は不可能?)

からのリンクが,全て新しいURLに切り替わった後ということか.

ロボットは多分3ヶ月ぐらいでしょうが,普通のリンク元ページは,どうにもならないような気がする.

検索してもし見つかれば,そこの管理人にメールしてお願いすることになるが, メーリングリストの過去ログアーカイブからリンクされてたりすると,どうしようもない.

ということで,うちの場合は廃止せずに残して置いて,新旧ドメイン平行運用の形にする予定. 片方は無料なのでお金はかからないから,まぁいいや.


© 2023 KMIソフトウェア