Hatena::ブログ(Diary)

ITなんてへっちゃらさ

2008-04-02 リダイレクトのまとめ

リダイレクトのまとめ

| 18:50

WEB制作において、リダイレクトをするなんて事は色々とあると思いますが、どんな手法があるのか。

リダイレクトとは・・・

WEB制作において、リニューアル時等には以前アクセスできたURLでアクセスできなくなったりします。

それを回避するために、過去のURLにアクセスが来た場合、新しいURLに飛ばしてあげる必要があります

さー行きましょう。

WEBサーバの設定で行う(.htaccess) (Apache)

WEBサーバがApacheの場合になるのかな、また、mod_rewriteというモジュールが使える場合

かなり強力なリダイレクトがかけます。

正規表現を用いたり等できるので、ガイドライン等に引っかからなければこれで行きたいところです。

設定の仕方1
Redirect permanent /hoge/  /hage/

↑はApacheのRedirectディレクティブという設定を使ってます。

参考:http://httpd.apache.org/docs/2.0/ja/mod/mod_alias.html#Redirect

設定の仕方2
RewriteEngine on
RewriteRule ^test.html$ /test/sakura.html [L]

↑はmod_rewriteというモジュールを使ってます。

参考:http://www.net-newbie.com/trans/mod_rewrite.html

HTMLのmetaタグで行う

metaタグのrefreshで行う手法

リダイレクト1件に付き、1個のファイルが必要なので、リダイレクトの数だけhtmlファイルが置かれる事になります。

結構分かりやすいというのがメリットなのかな。

mod_rewriteで設定ファイル間違えるとInternal Server Errorとかになったりするし。。。

書き方例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Refresh" content="0;URL=http://www.yahoo.co.jp/"> 
<meta name="robots" content="noindex, nofollow" />
</head> 
</html>

これで、リダイレクトしている事が一番多いのではないでしょうか?

しかーし、W3C的にはあまりお勧めできない手法。

参考:http://www.w3.org/TR/WCAG10-HTML-TECHS/#meta-element

Googleとかからは嫌われそう。Yahooは0秒でのリダイレクトであれば、moved permanently(301)と見なして、それ以外を302と見る模様。

参考:http://help.yahoo.co.jp/help/jp/search/indexing/indexing-21.html

SEO的にはあまりお勧めできないって事かな。

というのは、WEBページを見ていて、メタタグのリダイレクトだと、ブラウザの履歴に残ってしまい、

戻るボタンを押した時に一回戻ってまた飛ばされるという現象に陥るってのが

一番の理由かな?と思いますた

ユーザビリティの点でもやや見劣りするという事でしょうか。

JSでリダイレクト

<script type="text/javascript">
location.replace('http://hoge.com/')
</script>

な感じで、リダイレクトさせます。

こいつは勿論JSで飛ぶので、Javascriptがオフの場合には全くもってききません。

なので、metaタグ等と併用、noscript等を用いて代替を用意しておくことをお勧めします。

また、SEO的にはほぼNGみたいな感じっぽいですね。

参考:Cloaking, sneaky Javascript redirects, and doorway pages - Webmaster Tools Help


まぁいくらいい手法がどれかなんて議論があったとしても、お客さん都合で何をやるかはわかりません。

phpのheader()とかでやったり、色々ですね。一番多いのはmetaタグでやるものかと思いますが。

つーかれたっと。