301リダイレクトでWebサイトの移転 のバックアップの現在との差分(No.1)

更新


  • 追加された行はこの色です。
  • 削除された行はこの色です。
[[公開メモ]]

* 概要 [#t4c507a7]

Webサイトの引っ越しにより、今まで 

 http://xxx.xxx.com/path/to/file.html 

として閲覧されていたファイルを

 http://yyy.yyy.com/path/to/file.html 

に移した後、xxx.xxx.com へのアクセスを yyy.yyy.com へ誘導するための手順です。
に移した後に、

古い xxx.xxx.com を読みに来るアクセスを
新しいアドレスである yyy.yyy.com へ誘導するための手順です。

* 状況 [#z3ae6182]

重川研究室のホームページは昔

 http://dora.ims.tsukuba.ac.jp/

以下にあったのですが、専攻を移籍したことにより、

 http://dora.bk.tsukuba.ac.jp/

が正式なアドレスとなっていました。

でも古いアドレスでもアクセスできるようにと、DNS の設定は残したため、
でも古いアドレスでもアクセスできるようにと、DNS の設定は残してもらったため、
dora.ims.... でも、dora.bk... でも同じサイトに繋がり、
おなじページを返す状況になっていました。
同じ内容のページが閲覧できる状況になっていました。


* 問題点 [#fa19e406]

どちらでもアクセスできればそれでいいじゃん

と思っていたのですが、ここで問題点が浮上します

新しいページを作った際に、なぜか Google が dora.ims.tsukuba.ac.jp 
サイト上に新しいページを作ると、なぜか Google が dora.ims.tsukuba.ac.jp 
の方を正式アドレスとして判断してしまい、
検索結果からのアクセスが古いアドレスへ誘導されてしまうことがしばしばありました。
検索結果からのアクセスが古いアドレスばかりに誘導されてしまうことが
しばしばありました。

これではいつまでたっても古いアドレスへのアクセスがなくなりません。

* 古いアドレスへのアクセスを新しいアドレスへリダイレクトする [#uf5d7209]

Apache では NameVirtualHost という機能を使って、
同じサーバーへのアクセスを参照するサーバー名で振り分けて、
異なるサーバー名で参照してくるアクセスに対して、
異なるコンテンツを返す機能を持っています。

また、mod_rewrite というモジュールを使うと、
任意のアドレスへのアクセスを、任意の url へとリダイレクトすることができます。
アクセスされたパスの一部を書き換えて、
任意の url へとリダイレクトすることができます。

これらを使って 

  http://dora.ims.tsukuba.ac.jp/path/to/file.html

へのアクセスを、

  http://dora.bk.tsukuba.ac.jp/path/to/file.html

へとリダイレクトすることにしました。

** apache の設定 [#ie368127]

以下では mod_rewrite が有効化されていることが前提となっています。

** /etc/apache2/sites-enabled/000-default.conf [#z038a205]
/etc/apache2/sites-enabled/000-default.conf

 NameVirtualHost *:80
 
 <VirtualHost *:80>
     ServerName dora.bk.tsukuba.ac.jp
   
     # dora.bk.tsukuba.ac.jp へアクセスされた際の動作を設定する
     # 一番上の VirtualHost 設定は、他のすべての VirtualHost 設定とマッチしない
     # 場合のデフォルト設定にもなる
 
     ...
 
 </VirtualHost>
 
 <VirtualHost *:80>
     ServerName dora.ims.tsukuba.ac.jp
     # dora.ims.tsukuba.ac.jp へアクセスされた際の動作を設定する
 
     # 問答無用で dora.bk.tsukuba.ac.jp 以下へリダイレクトする
     # コード 301 は Permanently Moved で「今後は常にそちらを見て」という意味
     RewriteEngine on
     RewriteRule ^(.*) http://dora.bk.tsukuba.ac.jp$1 [R=301,L]
 </VirtualHost>

これでうまく行った。

* ブラウザのキャッシュに注意 [#u07f921d]

上記のような設定は、一度ミスをして、おかしな内容をブラウザに読ませると
ブラウザのキャッシュにその設定が残ってしまい、その後いくらサーバーの設定をいじっても
ブラウザが新しい内容を読みに行ってくれなくて困ってしまいます。

最新の Firefox や Chrome では、プライバシー設定の「ブラウズ履歴の消去」
のようなメニューから、「最新1時間のキャッシュ等の消去」ができるので、
おかしな設定がキャッシュに入ってしまった場合にはキャッシュを消去してから
再チャレンジするとぬかるみにはまらずにすみます。

* 質問・コメント [#i0de2260]

#article_kcaptcha



Counter: 2434 (from 2010/06/03), today: 2, yesterday: 3