こんにちは!なかしです。
サイト運営をしていると、旧いサイトから新しいサイトへお引越しをすることがあるのですが、その際のURL転送処理のことをリダイレクトといいます。
web業界で働く上で必須の知識になるので、今回はその方法についてご紹介します!
リダイレクトの種類
リダイレクトは301リダイレクトと302リダイレクトの2種類があり、それぞれ下記のようにな転送期間によって使い分ける必要があります。
- 301リダイレクト・・・サイト移管などで旧サイトから新サイトへ永続的に転送する場合
- 302リダイレクト・・・サイトの改修などでメンテナンス用のページに転送する場合
リダイレクトの方法
では、早速リダイレクトの方法について見ていきましょう。
.htacsessファイルでリダイレクト
SEO的に一番推奨されているリダイレクト方法で、下記の手順で.htacsessを編集して設定します。
①テキストエディタを使い、任意の名前でテキストファイルを作成
②「.htacsess」という名前に変更(初めから「.htacsess」という名前でファイルを作成できないため)
②ファイル内にリダイレクトのコードを記述
③FTP接続でリダイレクトさせたいファイルと同じ階層に「.htacsess」ファイルをアップする
よく使用するコード
◆古いページから新しいページへのリダイレクト
1 2 |
RewriteEngine on RewriteRule ^old.html$ http://www.sample.com/new.html [L,R=301] |
・RewriteEngine On・・・URLの書き換えを行うエンジンを起動しますの意
・RewriteRule・・・この記述でURLの書き換えますの意
・[L,R=301] ・・・『L』はこの処理はここで終わりという意味で、『R=301』は「301リダイレクトをしなさい」という指定
※『R』だけだと302リダイレクトになる
◆wwwありからwwwなしへのリダイレクト
1 2 3 |
RewriteEngine on RewriteCond %{ HTTP_HOST} ^sample\.com RewriteRule ^(.*)$ http://www.sample.com/$1 [R=301,L] |
・RewriteCond・・・URL書き換えを行うルールを指定
◆httpからhttpsへのリダイレクト
1 2 3 |
RewriteEngine on RewriteCond %{ HTTPS} off RewriteRule ^(.*)$ https://%{ HTTP_HOST}%{REQUEST_URI} [L,R=301] |
javascriptでリダイレクト
転送前の旧い方のhtmlファイル内にjavascriptを記載してリダイレクトする方法です。
コードはこちら↓
1 2 3 4 5 6 7 |
<script type="text/javascript"> setTimeout("link()", 0); function link() { location.href = '転送先URL'; } </script> |
settimeout はリダイレクトさせる時間を指定します。
時間が長いとサイトの離脱につながるので、 基本的には即座に転送する0にしておきましょう。
meta refreshを使ったリダイレクト
htmlのheadタグの中にコードを書いてリダイレクトする方法です。
一番簡単ですが、google非推奨なのでhtacsessでもjavascriptでも不可能な場合の最終手段として使うようにしましょう。
コードはこちら↓
1 |
<meta http-equiv="refresh" content="秒数;URL=URL"> |
contentプロパティの値「秒数」に、ユーザーがページを開いてからリダイレクトするまでの秒数を記述し、 URLプロパティの値「URL」の部分に転送先のURLを指定します。
最後に
基本的に.htacsessファイルでのリダイレクトが推奨されていますが、使用しているサーバーによってはhtacsessが使えないこともあるため、次の手段としてjavascript、meta refreshを使うようにするのが良いかと思います。
web業界にいる方はサイトのリニューアルやドメイン変更などで何かと使う機会も多いので、ぜひ覚えておきましょう!
この記事を書いた人
なかしなかし
レジットのコーダー。趣味は旅行と料理と商店街散策です。