【図解】htaccessの301リダイレクト|書き方・設置場所・設定方法
htaccessによるリダイレクトは、移転やリニューアルなどWebサイトのURL変更時に便利な技術です。この技術を用いることで、旧サイトにアクセスしたユーザーを新サイトに誘導できるだけではなく、検索エンジンから得た旧サイトの評価を新サイトへ引き継ぐことができます。
そのため、サイト運営者にとってhtaccessによるリダイレクトは、必ず理解しておきたい重要な技術です。
そこで今回は、htaccessとリダイレクトの基礎知識から、具体的な設定方法、注意点まで網羅して解説します。サイト運営者・SEO担当者の方は、ぜひ参考にしてください。
1.htaccessとは
htaccessとは、Webサーバーの挙動を制御するための設定が記述されたファイルです。ファイルの中身はプレーンテキストで記述されており、ファイルの作成や編集はテキストエディタのみで簡単に行うことができます。
htaccessはさまざまな設定を行うことができますが、ここではよく使用される代表的な設定について解説します。
・リダイレクト
リダイレクトとは転送という意味であり、htaccessで頻繁に使われる設定のひとつです。リダイレクトを設定すると、設定したURLから別の対象となるURLへ転送することができます。
Webサイトを運営していると、サイトリニューアルやサイト移転によって転送が必要となる場合があります。ユーザーに新しいURLを自動的に案内できるため、非常に便利なテクニックです。
また、リダイレクトを行うと古いURLに対する検索エンジンの評価を、新しいURLに引き継ぐことができるため、SEOの観点からも重要な意味を持つ設定となっています。
・Basic認証
Basic認証とは、特定のディレクトリに対してID・パスワードによるアクセス制限をかけることを言います。
Webサイト内には、内部関係者しかアクセスできないページや、ユーザーに見せたくないページが存在する場合もあります。htaccessを活用すると、このようなページにユーザー認証機能を追加して、アクセス制限をかけることができます。
・404ページの設定
サイト内の削除されたページへアクセスがあった場合や、ユーザーがURLを打ち間違えた場合は、「404ページ」と呼ばれるエラーメッセージが表示されます。
デフォルトの404ページは非常に簡素であるため、サイトを訪れたユーザーへの印象が弱いという問題点があります。そこでよく利用される方法が、カスタマイズされた404ページの表示です。
オリジナルメッセージの追加や、サイトマップの表示などによって、404ページの機能性を高められます。カスタム404ページの表示は、htaccessの設定で行うことが可能です。
・www有無の設定
WebサイトのURLは、「www」設定の有無を問わず使用することができます。しかし、検索エンジンは別々のサイトとして認識するため、同一ページのURLはwwwの有無を統一した方が良いとされています。
htaccessを使用することにより、URLのwwwの有無を指定することが可能です。サイト内のURLを揃える必要がある場合に用いられます。
・デフォルトページの設定
サイト内に存在するindex.htmlファイルは、ブラウザのアドレスバーにURLを入力する際には省略することができます。そのため、デフォルトではindex.htmlを省略した場合に、対象となるディレクトリのindex.htmlファイルが表示されるように設定されています。
htaccessを使用すると、デフォルトで表示されるファイルを任意のファイルに変更することが可能です。
1-1.htaccessが使える前提条件
htaccessは、どのサーバーでも利用できるものではありません。htaccessを利用するためには、mod_rewrite機能を使えるApacheサーバーであることが前提条件となります。
Apacheを利用しているサーバーでも、mod_rewriteをサポートしていないサーバーや、サーバー側の設定で利用に制限がかかっている場合は、htaccessを使用できません。
また、近年はApacheに代わってNginxと呼ばれるサーバーの利用が増えています。しかし、Nginxサーバーではhtaccessを使うことは不可能です。
現状では多くのレンタルサーバーで、htaccessを使用できます。しかし、万が一対応していない場合を考えて、htaccessを利用する予定のある方は、念のためにサーバーを契約する前に確認しておきましょう。
1-2.htaccessの設置場所と影響範囲
htaccessで設定した内容の有効範囲は、アップロードしたディレクトリの配下にある全ファイルに対して有効です。
例えば、サイト全体にhtaccessを有効化したい場合は、最も上位に位置するルートディレクトリに設置します。
サイト全体ではなく、特定のディレクトリのみ有効化したい場合は、対象となるディレクトリ単位で設置してください。
htaccessの設置場所を間違えると、適切にサイトが表示されないなどの問題が生じる恐れがあるため、アップロード時には注意が必要です。
2.リダイレクトとは
リダイレクトとは、ページに訪れたユーザーを別のページに転送することを言います。
Webサイトのメンテナンス時に告知ページへ転送する場合や、Webサイトのリニューアルや移転によりURLが変更された場合に使用されます。
リダイレクトの種類や目的については複数あるため、以下で詳しく解説します。
2-1.リダイレクトを行う目的
リダイレクトは、目的に合わせて使用されます。どのような状況でリダイレクトを使用するのかを把握するために、主な使用目的を理解しておきましょう。
・URL変更後のリンク元からのアクセスを可能にする
サイトの移転やリニューアルでURLを変更した場合、通常は別のサイトとして扱われるため、ユーザーは新しいサイトへアクセスできません。
そこで、旧サイトにリダイレクトを設定しておくことで、訪れたユーザーを自動的に新しいサイトへ移動させることができます。
・Googleからの評価を引き継ぐことができる
サイトのURLを変更すると、検索エンジンからの評価はゼロからのスタートとなります。
しかし、リダイレクトを設定することにより、旧サイトのGoogleからの評価を引き継ぐことができます。
リダイレクトは、URL変更後も旧サイトの評価を保持するというSEOの目的からよく使用されます。
・ドメイン・ページに与えられる評価の分散を避けられる
URLにある「www」の有無は、同じアドレスであったとしても検索エンジンからは個別に扱われます。
同一サイト内でwwwの有無にバラつきがあると、各ページの評価が分散したり、重複コンテンツと認識されたりするため、SEO上は統一させる必要があります。
リダイレクトを使用すると簡単にwwwの有無を変更でき、サイト内のURLを統一するためによく利用されます。
・アクセス解析が容易になる
リダイレクトを設定せずに、旧サイトと新サイトが混在している場合は、両方のアクセス解析を行う必要があります。Webサイトが大規模になると、アクセス解析やその他の施策を行う手間や時間が膨大となってしまいます。
旧サイトにリダイレクトを設定して新サイトに転送することにより、アクセス解析をはじめとした管理の手間を省くことが可能です。
2-2.リダイレクトの種類
リダイレクトにはhtaccess以外にも、さまざまな種類があります。
ここでは、リダイレクトの種類とそれぞれの特徴について解説します。
①「HTTP」によるリダイレクト
サーバーを経由してWebサイトをリダイレクトする方法を、HTTPリダイレクトと言います。htaccessの使用は、HTTPリダイレクトを実行するための方法です。
HTTPリダイレクトには、いくつかの種類があります。よく使用されるリダイレクトは次の通りです。
・301リダイレクト
301リダイレクトは、転送元のURLから転送先のURLへのリダイレクトが、「永続的なリダイレクト」のことです。転送前のサイトは使用せず、新しいサイトを使用することを意味します。Webサイトのリニューアルや移転でURLが変更された際に使用されます。
検索エンジンから評価を引き継ぐことができ、処理速度も速いため、301リダイレクトを使用することが一般的です。
・302リダイレクト
302リダイレクトは、一時的な転送を行う場合に使われます。一時的なWebサイトの移転や、PCサイトとスマホサイトを振り分ける際に使用するものです。
②「meta refresh」によるリダイレクト
meta refreshとは、HTMLファイルのheadタグ内に記述することで、指定したWebサイトに移動できるHTMLタグの一種です。手軽に使用できますが、Googleからの評価を引き継ぐことはできません。
③「JavaScript」によるリダイレクト
JavaScriptによるリダイレクトは、Googleの評価も引き継ぐことができるため、htaccessが何らかの理由で使用できない場合に有効な方法です。
しかし、こちらはブラウザ上で実行されるリダイレクトであるため、ユーザーの設定などでJavaScriptを許可していない場合は転送できない点に注意が必要です。
3.htaccessによるリダイレクトの設定方法
ここでは、htaccessによるリダイレクトを設定する手順について解説します。
①htaccessが利用できる環境であるか確認する
最初に、htaccessを利用できるApacheサーバーであるかを確認します。
②バックアップを取る
htaccessファイルは取り扱いを間違えると、重大なエラーに繋がる可能性があります。何かトラブルがあっても元に戻せるように、作業前にサイト全体をバックアップしておきます。
③リダイレクトを記述したhtaccessファイルを作成する
テキストエディタでリダイレクトの構文を記述したファイルを作成します。転送先やファイル名を間違えると正しくリダイレクトできないため、ミスが無いように注意して記述しましょう。
④サーバーにhtaccessファイルをアップロードする
リダイレクトを記述したhtaccessファイルを、有効化させたいディレクトリにアップロードします。アップロード先を間違えるとエラーの原因となるため、間違えないように確認しながら作業を進めましょう。
アップロードから一定期間経過すると設定内容が反映されるため、動作確認を行い問題が無ければ完了です。
3-1.基本的なリダイレクトの書き方
実際によく利用されるリダイレクトのhtaccessについて、具体的な構文の書き方を解説します。
①ドメイン変更時のリダイレクト
サイトのドメインが変更された場合に、古いドメインから新しいドメインへリダイレクトするための構文です。古いドメイン名をaaa、移転先ドメイン名をbbbとします。
RewriteEngine on
RewriteCond %{http_host} ^www.aaa.com
RewriteRule ^(.*)https://www.bbb.com/$1 [R=301,L]
②ディレクトリ変更時のリダイレクト
サイト内のファイルがあるディレクトリが変更となった場合に、変更先へリダイレクトするための構文です。例文ではindex.htmlが置かれている旧ディレクトリをsamplesite.com/aaa/index.html、新ディレクトリをsamplesite.com/bbb/index.htmlとします。この場合、ディレクトリ名のみ抜き出して指定する形となります。
RewriteEngine on
RewriteRule ^aaa(.*)$ /bbb$1 [R=301,L]
③ページファイル変更時のリダイレクト
Webサイト内の特定のページURLが変更された場合に使用する構文です。変更前のページをsamplesite.com/aaa.html、変更後のページをsamplesite.com/bbb.htmlとします。
この場合は、URL末尾のファイル名だけの指定で問題ありません。
RewriteEngine on
RewriteRule ^aaa.html$ /bbb.html [R=301,L]
④ドメイン・ディレクトリ・ファイル変更時のリダイレクト
URL全体が変更となる場合は、以下のように記述します。旧URLはhttps://www.aaa.com/aaa/aaa.html、新URLがhttps://www.bbb.com/bbb/bbb.htmlです。
RewriteEngine on
RewriteRule https://www.aaa.com/aaa/aaa.html
https://www.bbb.com/bbb/bbb.html [R=301,L]
⑤特定のディレクトリを除外するリダイレクト
サイト全体にリダイレクトを指定した場合でも、特定のディレクトリだけは除外したい場合があります。特定のディレクトリをリダイレクトから除外するための構文は、以下のように記述します。除外するディレクトリ名はbbbです。
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !(^/bbb/)
RewriteRule ^$ http:www.aaa.com [R=301,L]
⑥404エラーページへのリダイレクト
404エラー発生時に、カスタマイズして別に用意しているページへ転送する場合の構文です。カスタムページのURLはhttp://www.samplesite.com/error/404.htmlとします。
ErrorDocument 404 http://www.samplesite.com/error/404.html
⑦デバイスごとにページを分けるリダイレクト
PCサイトとスマホサイトを別々に用意している場合に使用するリダイレクト構文です。スマホでアクセスするとスマホ用に用意したsmartディレクトリに転送するサイト構造を仮定しています。
RewriteEngine on
RewriteBase/
RewriteCond %{REQUEST_URI} !/smart/
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|Android.*Mobile|Windows.\ Phone)
RewriteRule ^(.*)$ smart/$1 [R]
RewriteCond %{REQUEST_URI} /smart/
RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|Android.*Mobile|Windows.\ Phone)
RewriteRule ^smart/(.*)$ $1 [R]
3-2.SEO対策で実施されるリダイレクトの書き方
ここでは、SEO対策でよく利用される、URLを統一化するリダイレクトの書き方について解説します。
①wwwありに統一するリダイレクト
samplesite.comというwwwが無いURLにアクセスされた場合に、www.samplesite.comにリダイレクトする構文です。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^samplesite¥.com$
RewriteRule ^(.*)$ https://www.samplesite.com/$1 [R=301,L]
②wwwなしに統一するリダイレクト
上記とは逆に、www.samplesite.comのwwwを取り除き、samplesite.comへリダイレクトするための構文です。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.samplesite¥.com$
RewriteRule ^(.*)$ https://samplesite.com/$1 [R=301,L]
③URLの末尾を統一するリダイレクト
URLの末尾にあるindexファイルの表記は以下のパターンに分かれますが、不統一であると別々のサイトとして扱われるため、SEO上はマイナスに作用すると言われています。
(1)http://samplesite.com/index.html
(2)http://samplesite.com/
以下の構文は、(2)の表記へリダイレクトするための構文です。
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ https://samplesite.com/$1 [R=301,L]
④httpをhttpsに統一するリダイレクト
WebサイトのSSL化により、httpからhttpsにリダイレクトする構文です。
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
4.htaccessファイルの作成・アップロード方法
htaccessファイルは、プレーンテキストで構文が記述されているため、Windowsに標準搭載されているメモ帳などのテキストエディタで編集することができます。
必要となる設定をテキストエディタで記述して、サーバー上のhtaccessを有効化させたいディレクトリにアップロードします。HTMLファイルやCSSファイルと同様に、FTPソフトを使用してアップロードしてください。
サーバーによっては、htaccessを管理画面上から直接編集することもできますが、少しの記述ミスでも致命的なエラーに繋がる可能性があるため推奨しません。
必ず事前にバックアップを取り、テキストエディタでhtaccessファイルを作成することをおすすめします。
4-1.PC・ソフトの設定変更
htaccessファイルの作成・アップロードの際に、パソコンやソフトの設定によっては適切に作業できない場合があります。htaccessファイルの編集時に注意したいポイントを紹介します。
①PCの表示設定
「.htaccess」のようにファイル名の前にドットが付くファイルは、PC上で拡張子を表示しない設定にしているとエラーが出てファイルを保存できません。
また、保存できたとしても実際には「.htaccess.txt」のように不要な拡張子が付与されている場合があります。
このような場合は、拡張子を表示する設定に変更して、一時的に「.txt」などの拡張子を付けたままファイルを保存しておきましょう。そして、サーバーにアップロードを行った後に、不要な拡張子を取り除いた名称に変更してください。
②テキストエディタの設定
htaccessの記述に問題は無いにもかかわらず、サーバー上で動作しない場合は、改行コードを変更する必要があります。
基本的にWindows環境での改行コードは「CR+LF」が使用されており、そのままサーバーにアップロードしても基本的に問題はありません。しかし、サーバーの環境によっては改行コードを「LF」に指定しなければならない場合もあります。
このようなケースでは、サーバー環境を確認後、テキストエディタを開いて改行コードの指定を変更してください。
③FTPソフトの設定
使用しているFTPソフトの設定によっては、「.htaccess」のようなドットから始まるファイルは隠しファイル扱いとなり、表示されない場合があります。
このような場合は、FTPソフトの設定画面から、ドットで始まるファイルを表示するように設定変更を行うと、htaccessも画面上に表示されます。
FTPソフトの設定を変更して解決しない場合は、サーバー側の設定で制限がかかっている可能性があります。この場合はユーザー側からは操作できないため、サーバー管理者に確認してください。
4-2.アップロード後の確認
アップロード完了後は、htaccessに指定した設定が正しく反映されているかを確認します。
リダイレクトを設定した旧サイトのWebページを実際に開いて、正しく目的のページへ転送が行われることを、対象となる全てのページでテストしてください。リダイレクトの動作を確認するためのツールもあるため、ページが膨大な場合は利用を検討しましょう。
エラー発生時には詳細な内容を把握して改善するために、ログを取得してください。設定が複雑なhtaccessファイルは、手探りで修正すると時間がかかるため、エラーの原因を明確にすることが重要です。
5.htaccessによるリダイレクトの注意点
htaccessは簡単な設定でサイトを転送できる非常に便利な技術ですが、少し設定を間違えるとサイトに不具合が生じるため、取り扱いには細心の注意を払う必要があります。
ここでは、htaccessでリダイレクトを行う際に注意すべき点を解説します。
①SEO上の悪い評価も引き継ぐ
htaccessによるリダイレクトは、転送元のサイトに与えられたGoogleからの評価を転送先にも引き継ぎます。そのため、良い評価だけではなく、悪い評価も引き継がれる点に注意が必要です。
過去にペナルティを受けていた場合など、旧サイトの評価が悪い場合は、SEOの観点から見ると、リダイレクトしない方が良いと言えます。
②301リダイレクトは解除できない
301リダイレクトを設定して、旧サイトと新サイトの関係性が検索エンジンに認識された以降も、301リダイレクトを解除してはなりません。
301リダイレクトを解除すると、検索エンジン側での永続的な転送という認識が消えて、旧サイトと新サイトは別々のサイトであると扱われるためです。
検索エンジンに認識された以降も、必ずサーバー上のhtaccessファイルは保持し続けるようにしましょう。
③該当ページにリダイレクトさせなければならない
ページ単位でリダイレクトを指定する場合、旧サイトからの全転送先は新サイトのトップページとなるケースがあります。
旧サイトの下層ページから新サイトのトップページに転送されると、ユーザーは目的の情報を転送先で自ら探さなければなりません。また、この設定方法だと旧サイトのページ評価を新サイトの同じページに引き継ぐことも不可能です。
SEO的にもユーザビリティー的にもデメリットとなるため、リダイレクト先は必ず該当ページを指定しましょう。
④無限ループを発生させてしまう
旧サイトから新サイトへ転送する設定と同時に、誤って新サイトから旧サイトに転送する設定を行うと、両サイトを永遠に行き来することとなります。
この現象はリダイレクトループと呼ばれ、サーバーに重い負荷がかかり、Webサイトが閲覧できなくなってしまいます。
リダイレクトループを起こさないように注意して、htaccessの構文を記載しましょう。
⑤必要な記述を削除してしまう
リダイレクトでhtaccessを記述する際に、デフォルトで書かれている文字列を誤って削除しないように注意してください。
htaccessファイルはWebサーバーの挙動を制御するファイルであるため、リダイレクト以外にもさまざまな役割があります。初期設定で書かれている記述を削除したり変更を加えたりすると、サイトに不具合が生じます。
編集時には必ず事前にバックアップを取り、もし変更してはならない記述を触ってしまった場合でも、元に戻せるようにしておきましょう。
まとめ
htaccessを活用したリダイレクトは、Webサイトのリニューアルや移転の際に、Googleからの評価を引き継ぐことができる便利な技術です。
しかし、記載ミスでWebサイトが表示できなくなるなどの重大なエラーに繋がる可能性があるため、取り扱いには細心の注意が必要となります。
そのため、Webサイトのリニューアルや移転でhtaccessによるリダイレクトを行う場合は、本記事で紹介した注意点を踏まえて、作業を進めましょう。