気づけば毎回検索してる!リダイレクトの設定あれこれ。
サイトリニューアル時やドメイン変更など、URLの構成が変わった際には不可欠な301リダイレクト。設定せずそのまま放っておくと被リンクやドメインエイジを引き継げないだけでなく、Googleなど検索エンジンにインデックスされていたページも、リンク切れでたどり着けなくなってしまいます。
そのほかにもURL正規化に不可欠な、サイトURLのwwwあり・なしや、index.htmlあり・なしの統一にも使われます。そんな結構重要なリダイレクトですが、気づけば.htaccessの書き方を毎回調べている気がする…。というわけで301リダイレクトの設定を、覚書きとして残しておきたいと思います。
リダイレクトの基本をおさらい。
改めて301リダイレクトとは。
301リダイレクトとは、ステータスコード301(恒久的な移転の意)をサーバーから返して、元のURLにはもう何もないので、こっちの新しいURL見てね、ということを伝える方法です。ちなみに302 は一時的な移転の際に使用されます。メンテとかですね。
そしてステータスコードというのは、サーバーからのレスポンスを表現する3桁の数字コードです。404(未検出/見つかりません)なんかは割とよく目にしますよね。
301リダイレクト:ステータスコード301を用いて行なうHTTPリダイレクト。“Moved Permanently”(恒久的に移転)を意味し、リクエストされたURLは新しいURLに恒久的に移転し、元のURLはもはや無効であることを表す。WebサイトやWebページの移転などの際に用いられる。HTTPリダイレクトとは – IT用語辞典
改めて.htaccessとは。
.htaccessというのは、Apacheサーバーにおいてディレクトリ単位で設置できる設定ファイルです。
そもそものサーバー設定はhttpd.conf において指定されていますが、これは管理者にしか変更できません。そこでレンタルサーバーなどでは、ディレクトリごとに.htaccessファイルを設置して設定を上書きできるようになっています。ただし一部、.htaccessによる上書きを禁止しているサーバーもあります。その場合、管理画面から設定を行える場合が多いです。
# Redirect Redirect permanent / http://www.NewDomain.com # Redirect RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.OldDomain\.com RewriteRule ^/(.*) http://www.NewDomain.com/$1 [R=301,L]
この二通りの書き方はどちらも同じ働きをします。違いはmod_rewrite(拡張機能)を利用するか否かです。mod_rewrite を利用すれば、正規表現を使い複雑な条件でリダイレクトさせることができます。
mod_rewrite機能を利用できないサーバーでは、RewriteEngine on から始まる書き方は使用できません。この機能が入っているか否かは、利用しているサーバー会社のよくある質問などに記載されています。
301リダイレクトの設定方法。
具体的な設定方法を解説していきます。
.htaccessで設定する場合。
ドメイン移転の場合
# Redirect Redirect permanent / http://www.NewDomain.com
下層のディレクトリ構造がすべて同じ場合は、これでリダイレクトされます。
ページURLの変更の場合(個別)
# Redirect Redirect permanent /company/index.html http://www.SiteURL.com/company.html
後に続く新しいURLは、絶対URLで指定してください。
ページURLの変更の場合(複数)
# Redirect Redirect permanent /product/ http://www.SiteURL.com/items/
下層のページURLが同じ場合、これでリダイレクトされます。
http://www.SiteURL.com/product/p001.html にアクセスした場合、
http://www.SiteURL.com/items/p001.html に転送されます。
wwwのあり・なしを統一する場合
WordPressの場合、設定のサイトアドレス (URL) で簡単に設定できます。
またサーバーによっては管理画面上で設定できるものもあります。
wwwありに統一
# Redirect RewriteEngine on RewriteCond %{HTTP_HOST} ^SiteURL\.com RewriteRule ^/(.*) http://www.SiteURL.com/$1 [R=301,L]
wwwなしに統一
# Redirect RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.SiteURL\.com RewriteRule ^/(.*) http://SiteURL.com/$1 [R=301,L]
これでどちらかに統一することができます。
あわせてSearch Console(旧ウェブマスターツール)に両バージョンのURLを追加し、それぞれのプロパティで優先するバージョンを選択しておきます。
index.html(.php/.cgi)なしに統一する場合
# Redirect RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index\.(html|php|cgi) RewriteRule ^(.*)index\.(html|php|cgi)$ http://www.SiteURL.com/$1 [R=301,L]
これでファイル形式を問わず、indexなしに統一することができます。
なお.htaccess作成の際はテキストエディタなどで作成し、txt.htaccess 等で保存します。その後FTPクライアントでアップしてから、サーバー上でリネームすれば完了です。後述するチェッカーなどで動作確認を忘れず行いましょう。なお複数の.htaccessを設置する場合、子ディレクトリのものが優先されます。
PHPで設定する場合。
PHPでも301リダイレクトが設定できます。
<?php header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.NewDomain.com"); exit; ?>
すべてのページに適用されるようにします。
メタタグで設定する場合。
.htaccessやPHPでのリダイレクトが使えない場合、メタタグでも転送できます。こちらは手軽に利用できることが利点ですが、Googleは301リダイレクトを推奨しているため、使う際には注意が必要です。メタタグやJavaScriptでの転送は、サーバーによる301リダイレクトとは違い、検索エンジンの評価を引き継ぐ保証がありません。
<link rel=”canonical” href=”http://www.NewDomain.com”> <meta http-equiv="refresh" content="5;URL=http://www.NewDomain.com">
すべてのページに適用されるようにします。
URL正規化タグ(rel=”canonical”)は、重複コンテンツに見られないよう入れておきます。
この場合、5秒後に新しいドメインのページに移動します。
0秒を指定した場合、Yahoo!では301リダイレクトとして扱われます。
JavaScriptで設定する場合。
<script type="text/javascript"> <!-- setTimeout("jump()", 5000); function jump(){ location.href="http://www.NewDomain.com"; } --> </script>
5秒後に新しいドメインのページに移動します。
JavaScriptが無効だと転送されません。
すべてTOPにリダイレクト、はNG。
301リダイレクトは基本的に新旧で対になるページにすべきです。
不要になったページはトップにリダイレクトするのでなく、404エラーを返すようにします。レンタルサーバーデフォルトの404ページでなく、カスタム404ページを作成してそこにトップページや人気コンテンツへの導線を用意しましょう。
関連性を無視してすべてトップにリダイレクトをかけると、ソフト404扱いとなり検索エンジンにスパム扱いを受けてしまう可能性が高まります。これは例えば、トップにリダイレクトされる古い商品ページが無数にインデックスされていれば、該当の商品を検索しているユーザーにとって不利益になるからです。
カスタム404ページを設置する場合。
#Custom 404 ErrorDocument 404 /error.html
/error.html 部分は任意で記述します。
PHPで404エラーを返す場合。
<?php header("HTTP/1.1 404 Not Found"); ?>
これでステータスコード:404 が出力されます。
リダイレクトの動作確認に便利なツール。
リダイレクトの動作確認に便利なツールをご紹介します。
- リダイレクト検証ツール
http://www.searchengineoptimization.jp/redirect-checker - リダイレクトチェックツール
http://tool.mface.jp/redirects/ - HTTP Header Response Status Codes Check Tool
http://tools.seochat.com/tools/header-checker-tool/
リダイレクトが無事動いていることを確認したら、Search Console のアドレス変更ツールを使って、アドレス変更をリクエストしておきましょう。
リダイレクトは基本そのままにしておく。
移転が完了した後も、リダイレクト設定は可能な限りそのままにしておくほうがいいようです。
301リダイレクトは「恒久的な転送」です。301リダイレクトが設定されている状態で検索エンジンは、URLが変わったことを認識し処理します。内部リンク・外部リンクの両方を新しいURLに張替え、新しいURLにも十分なリンクが集まるなど、301リダイレクトの手助けを借りずに新しいURLに評価が付いたと判断したら、301リダイレクトを“切る”ことはありえます。
そうだとしても、301リダイレクトは原則、半永久的に設定しておくべきです。海外SEO情報ブログ
まとめ
いかがでしたでしょうか。コピペで済ましてしまうことも多い.htaccessでのリダイレクトですが、改めて見直してみると知らなかったことも多いのではないでしょうか。
サイトURL変更前後の検索順位や、流入数にも関わるシビアな問題なので、日々更新される情報をチェックしつつ正しい知識や手順を身につけておきたいものです。ではまた!
参考:
URL の変更を伴うサイト移転 – Search Console ヘルプ
301リダイレクトによるサイト移転時に重要なTIPSほか、気になる最新SEOのQ&A – 海外SEO情報ブログ
新人コーダーに知っておいて欲しいリダイレクトの基本 – クロノドライブ
個性的な404デザインまとめ!日本国内・海外のエラーページ48選。
ウェブ制作でお悩みの方へ。
ネット通販やウェブ制作、ECサポート事業を行っている(株)ビリオンプラン・ジャパンが運営しています。ランディングページやサイト制作、自社メディアを使った集客提案、中国をはじめとする海外ローカライズ作業など幅広く対応いたします。
ウェブ制作のお悩み、ご相談ください。
ビリオンプラン・ジャパンは日本を拠点に、香港などの海外グループ会社も生かし各種サービスをご提供しています。まずはお気軽にご相談くださいませ。
または、お電話でも承ります。
※ただいま新規ウェブ制作の受付は停止しております
10:00 - 19:00(土日祝休み)
06-6271-7761
ABOUT ME
- デザイナー/編集Twitter:@BILLIONPLAN_JP
- 大阪在住WEBデザイナー。制作会社、EC業界でデザイナーをやった後に、ゲームアプリの世界へ。そんなにゲーム好きじゃないことに気づいてウェブに出戻り。その後ビリオンプラン立ち上げに参加。ご相談はこちらにお願いします。フェネック飼いたい。 →記事一覧
Recent Posts
2016.10.26EC楽天RMSのカスタマイズで使えるclass名の一覧。
2016.09.30WEBWordPressプラグイン利用で、オリジナルシェアボタンを簡単設置。
2016.08.10EC注目のキッズファッション!楽天の参考デザインまとめ、子供服サイト10選。
2016.07.15DESIGNロゴだけでも変更しとこ!WordPressのログイン画面を簡単カスタマイズ。
新着記事を配信しています
FacebookやGoogle+で新着記事を配信しています。よろしければ「いいね!」や「フォロー」をお願いします。