リダイレクトを.htaccessファイルで行う方法や注意点を紹介
.htaccess(ドットエイチティーアクセス)とは、Webサーバー上で行う制御を外部から簡単に行えるようにする際に使われるファイルで、リダイレクトの設定時などによく用いられます。
.htaccessファイルはテキストエディタやメモ帳などから作成できますが、記述やファイルの保存、アップロードを誤った方法で行ってしまうと、Webサイトでのページ表示に影響を及ぼす可能性があるため、注意が必要です。
この記事では、リダイレクト設定を.htaccessファイルを用いて行う際のファイルの作成手順や記述方法、アップロード場所、ファイル作成時の注意点などを詳しくご紹介します。
リダイレクトでよく使われる.htaccessとは
.htaccessとは、Webサイト上でのさまざまな制御が可能なファイルで、主に以下のような設定などが行えます。
- リダイレクト
- IPアドレスの制御
- BASIC認証
- URLの正規化
- ファイル一覧表示の制御
- ディレクトリリスティングの設定
- キャッシュの設定
- エラーページの設定
上記のような制御はHTMLやCSSでは実行できないため、Webサーバー側での操作が必要です。通常、Webサーバーの操作はHTMLやCSSに比べて難易度が高いものの、FTP(File Transfer Protocol)などを用いて外部から簡単に操作できるようにする際に使うファイルが.htaccessです。
なお、.htaccessファイルはリダイレクトの設定時によく使われており、SEO対策を行ううえでも重要です。
ページ単位、ディレクトリ単位など、リダイレクトのケース別にファイルへ記述する内容は異なるため、詳しい記述方法は「リダイレクトのケース別.htaccessファイルの記述方法・設置方法」でご紹介します。
そもそもリダイレクトとは
そもそもリダイレクトとは、特定のページへアクセスした際に、同じWebサイト内の別のページへ自動で転送することを指します。
リダイレクトには「301リダイレクト」「302リダイレクト」の2種類があり、301リダイレクトは永久的にページ転送を行い、検索エンジンからのSEO評価を引き継げる点が特長です。
一方で302リダイレクトは一時的なページ転送を行う際に用いられ、検索エンジンは転送元のページにおけるSEO評価を転送後のページへ引き継ぎません。そのため、扱うページによって301リダイレクトと302をリダイレクトを使い分けることがSEO対策やWebサイト運営では重要になります。
なお、本記事におけるリダイレクトは、すべて301リダイレクトを指しています。
.htaccessファイルの作り方
リダイレクトのケース別の記述方法をご紹介する前に、まずは基本的な.htaccessファイルの作り方をご紹介します。
.htaccessファイル自体はテキストで構成されており、メモ帳やテキストエディタで編集可能です。.htaccessファイルの作り方は、大きく分けて以下の2つのステップで行えます。
1.メモ帳などでファイルを作成し、「.htaccess」の名前で保存する
2.「.htaccess」のファイル名で保存できなかった場合は、「.htaccess.txt」で保存し、後から変更する
作業自体は難しくないものの、作業時にはいくつかの注意点があるため、以下のポイントに注意しながら作成を進めてください。
1.メモ帳などでファイルを作成し、「.htaccess」の名前で保存する
メモ帳やテキストエディタに記述する際は、文字コードをUTF-8(BOMなし)に設定し、日本語は文字化けを避けるために使用しないよう注意しましょう。
なお、記述が完了し保存する前には、最後の行に改行が入っているかをご確認ください。改行されていないと、最後の行が有効にならず、正しく記述内容を反映できない恐れがあります。
また、ファイルを保存する際はファイル拡張子を「すべてのファイル」で保存する必要があり、ファイル名に「.htaccess」を設定して保存しましょう。
ファイルを保存できたら、サーバー上の制御対象のページやディレクトリなどの同じ階層にアップロードします。
2.「.htaccess」のファイル名で保存できなかった場合は、「.htaccess.txt」で保存し、後から変更する
作業環境によっては、ファイルの作成時に「.htaccess」といった先頭に「.」のある名前でファイルを保存できなかったり、保存後にファイルが非表示になってしまったりすることがあります。
このような場合は、一度「htaccess.txt」といった名前で保存し、サーバーにアップロードした後にFTPソフトを使いサーバー上のファイル名を「.htaccess」にすることで解決できます。
.htaccessファイルの設置箇所と適用される範囲
ここまで、.htaccessファイルの基本的な作り方をご紹介しました。作成したファイルはWebサーバーにアップロードしますが、ファイルを置いた位置によってファイルの内容が適用される範囲が異なるため、注意が必要です。
なお、基本的に、.htaccessファイルを設置したディレクトリから下の階層に設置されているすべての範囲にファイルの内容は適用されます。
例えば、Webサイト全体にファイルを適用させたい場合は、以下の図のように、Webサイトのトップページがある階層である最も上位のディレクトリにファイルをアップロードしましょう。
特定のディレクトリと、その配下にあるサブディレクトリにのみファイルを適用させたい場合は、適用させたい範囲の中で最も上位のディレクトリにファイルをアップロードします。
例えば、「drink」「juice」「tea」「coffee」のディレクトリにファイルを適用させたい場合は、「drink」ディレクトリにファイルをアップロードしましょう。
このようにファイルをアップロードすることで、「drink」ディレクトリにのみファイルの内容が適用され、「food」ディレクトリには適用されません。
なお、.htaccessファイルは複数設置が可能です。複数設置した場合は、適用範囲に含まれるディレクトリにはすべてのファイル内容が反映されますが、より下位に設置されたファイルの内容が優先的に適用されます。
リダイレクトのケース別.htaccessファイルの記述方法・設置方法
ここまで、.htaccessファイルの基本的な作成方法と、ファイルの設置場所についてご紹介しました。リダイレクトで.htaccessファイルを設置する際は、ページ単位やディレクトリ単位など、リダイレクトを行う範囲によってファイルの記述内容や設置場所が異なります。
ここからは、リダイレクトのケース別に.htaccessファイルの記述方法や設置方法をご紹介します。
ページ単位のリダイレクト
ページ同士の統合や期間限定で公開しているページの閉鎖、ページのURL変更などを行う際には、リダイレクト設定が必要です。
例えば、「https://www.sample.com/AAAA」というページを「https://www.example.com/BBBB」にリダイレクトする場合は、次のように記述します。
RewriteEngine On
RewriteRule ^AAAA$ https://www.sample.com/BBBB [R=301,L]
なお、アップロードする際は、リダイレクトするページと同じ階層にファイルを設置します。
ディレクトリ単位のリダイレクト
Webサイト内のカテゴリー名を変更する場合や、ディレクトリ構造を変更する場合などは、ディレクトリ単位でリダイレクトが必要になることもあります。
例えば、https://www.sample.com/AAAA/CCCCというページの「/AAAA/」のディレクトリを「/BBBB/」に変更し、ページのURLをhttps://www.sample.com/BBBB/CCCCとしたい場合は、次のように記述します。
RewriteEngine On
RewriteRule ^AAAA(.*)$ /BBBB$1 [L,R=301]
なお、アップロードする際は、リダイレクトするディレクトリ内にファイルを設置します。
サブドメインのリダイレクト
サブドメイン(〇〇.ドメイン名.com など)をドメイン配下に移動させるときなどの場合は、サブドメインのリダイレクトを行います。
例えば、https://abc.sample.comをhttps://sample.com/AAAAにリダイレクトさせたい場合は、次のように記述します。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^abc\.sample\.com$
RewriteRule (.*) https://sample.com/AAAA/$1 [R=301,L]
なお、アップロードする際は、サブドメイン直下にファイルを設置します。
ドメイン単位のリダイレクト
Webサイトの移転や複数のサイトの統合・分割、ドメインの変更などを行った場合は、ドメイン単位でのリダイレクトが必要です。
例えば、https://www.sample.comの「sample.com」というドメインを「sample123.com」というドメインにリダイレクトする場合は、次のように記述します。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.sample.com
RewriteRule ^(.*)$ https://www.sample123.com/$1 [R=301,L]
なお、アップロードする際は、ドメイン(sample.com)直下の階層に設置します。
この設定が適用された場合、リダイレクトによって置き換わるのはドメイン部分のみとなるため、ドメイン以降のスラッグなども変更となる場合は、先述したディレクトリ単位・ページ単位での設定が別途必要になります。
デバイスごとのリダイレクト
1つのページに対して、PCとスマートフォンで別々のURLを用意している場合は、デバイスごとに割り振られたURLへ誘導するよう制御できます。
例えば、PC用に「https://www.sample.com/AAAA」、スマートフォン用に「https://www.sample.com/sp/AAAA」とURLを分けており、アクセスした際の利用デバイスによってそれぞれのURLを割り当てたい場合は、次のように記述します。
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !/sp/
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|Android.*Mobile|Windows.\ Phone)
RewriteRule ^(.*)$ sp/$1 [R]
RewriteCond %{REQUEST_URI} /sp/
RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|Android.*Mobile|Windows.\ Phone)
RewriteRule ^sp/(.*)$ $1 [R]
なお、アップロードする際は、ドメイン(sample.com)直下の階層に設置します。
404エラーページへのリダイレクト
ユーザーがURLを入力し間違えたり、削除されたページへアクセスしたりなど、リンク切れを起こしたページにアクセスした際は、404エラーページが表示されます。
404エラーページは、何も設定していない場合、白い画面に「Not Found」のみ書かれたものや、サーバー会社が用意したエラーページなどが表示されますが、自社サイトのトップページへの誘導リンクを加えたり、自社サイトのデザインに合わせたページにしたりするなど、自社独自のページへリダイレクトさせることで離脱を防げるでしょう。
404エラーページへのリダイレクトを設定する際は、次のように記述します。
ErrorDocument 404 /404
なお、アップロードする際は、ドメイン(sample.com)直下の階層に設置します。
特定のディレクトリのリダイレクトを除外
.htaccessファイルでは、ドメイン単位でリダイレクトをかけつつ、特定のディレクトリにのみリダイレクトを適用させないといった制御も行えます。
例えば、https://www.sample.comの「sample.com」というドメインを「sample123.com」というドメインにリダイレクトさせたうえで、「/AAAA/」というディレクトリにはリダイレクトさせないよう設定する場合は、次のように記述します。
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/AAAA/
RewriteRule ^$ https://www.sample123.com [R=301,L]
なお、アップロードする際は、リダイレクトから除外したいディレクトリと同じ階層に設置します。
SEO対策で有効なリダイレクトを.htaccessファイルで設定する方法
ここまで、リダイレクトで.htaccessファイルを使用する際の記述方法や設置方法をご紹介しました。
Webサイトにおいては、同一内容のページでありながらも、以下のようなケースで別URLとして検索エンジンに認識されてしまうことがあります。
- 「www」の有無(「https://www.sample.com」と「https://sample.com」)
- 「index.html」の有無(「https://www.sample.com」と「https://www.sample.com/index.html」)
- SSL化の有無(「https://」と「http://」)
このようなURLがサイト内に存在する場合は、検索エンジンからのSEO評価が分散してしまう恐れがあるため、URLの統一(正規化)を行い、1つのページに評価を集められるよう制御する必要があります。
wwwのあり・なしを統一する
「https://www.sample.com」のドメインである「www.sample.com」を、「www」のない「sample.com」に統一したい場合は、次のように記述します。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.sample\.com$ [NC]
RewriteRule ^(.*)$ https://sample.com/$1 [R=301,L]
index.htmlのあり・なしを統一する
「https://www.sample.com/index.html」を、「index.html」のない「https://www.sample.com」に統一したい場合は、次のように記述します。
RewriteEngine On
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ https://www.sample.com/$1 [R=301,L]
SSL化する
「http://www.sample.com」をSSL化で「https://~」の形式に変更し、「https://www.sample.com」としたい場合は、次のように記述します。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
なお、SSL化はGoogleの検索結果におけるランキングを決める際のアルゴリズムとしても採用されています。
参照:ランキング シグナルとしての HTTPS|Google 検索セントラル
なお、ここまでご紹介したURLの正規化を設定した.htaccessファイルをアップロードする際は、ドメイン全体に適用させる際はドメイン直下に、特定のディレクトリに適用させる際はそのディレクトリ内に設置します。
.htaccessファイルの作成時に起こりやすいミス
ここまで、リダイレクトで.htaccessファイルを作る際の記述方法などをご紹介しました。上記のような記述内容で.htaccessファイルを作成し、サーバーにアップロードする際に、アップロード場所を間違えたり、必要な記述を消してしまったりすることで正常にページが動作しなくなることがあるため、注意が必要です。
ここでは、.htaccessファイルの作成時に起こりやすいミスをご紹介します。
アップロード場所を間違える
リダイレクトが行われない、異なる場所に設定内容が適用されているなど、設定した制御内容が指定どおりに適用されない場合は、アップロードする場所を間違えている可能性があります。
アップロードする際は、Webサイト全体に適用させる場合はドメイン直下、特定のディレクトリに適用させる場合はそのディレクトリと同じ階層に設置します。思うようにファイルの内容を適用できない場合は、一度アップロード場所を間違えていないかをご確認ください。
誤って上書きしてしまう
.htaccessファイルはWebサイト内に複数設置できるため、さまざまな箇所にファイルを設置しているケースも多いです。
このとき、編集するファイルを間違え、誤ってコードを上書きしてしまうとページが正常に動かなくなる可能性があります。バックアップなどを取っておかなかった場合は、一からファイルを作りアップロードし直す必要があるため、注意が必要です。
変更の必要のないファイルを消してしまう
WordPressでは、インストール時に.htaccessファイルが生成されます。このようなデフォルトのファイルを誤って消してしまうことで、ページが表示されなくなるなど正常に動作しなくなる可能性があります。
このようなファイルを自身で設定したものと間違え、ファイルの上書きや削除を行ってしまうミスが生じるケースもあるため、ファイルのアップロードは慎重に行うことが大切です。
無限ループを起こしてしまう
.htaccessファイルの設置を誤り、「ページAからページBへ転送」「ページBからページAへ転送」の2つの制御を適用させてしまった場合、無限ループが起こります。無限ループが生じると該当のページが開けなくなるだけでなく、サーバーに大きな負荷がかかるため、注意が必要です。
ページにアクセスした際に、「リダイレクト回数が多すぎます」「リダイレクトが繰り返し行われました」などのリダイレクトエラーが出た場合は無限ループが生じている可能性があるため、ファイルの記述内容を見直すとよいでしょう。
リダイレクトを.htaccessファイルで設定する際の注意点
ここまで、.htaccessファイルを作成し、アップロードする際の注意点をご紹介しました。リダイレクトの設定を.htaccessファイルで適用させる際は、以下の点にもご注意ください。
必ずバックアップを取る
リダイレクトを行う際は、必ずバックアップを取っておきましょう。
「.htaccessファイルの作成時に起こりやすいミス」であげたようなミスが生じた際に、バックアップを取っておけば、誤って必要な記述に上書きや削除を行ってしまった場合や、誤った場所にファイルをアップロードしてページが正常に動作しなくなった場合でも、すぐに元の状態に復元できます。
慎重にファイルの作成・アップロードを行うことはもちろん、万が一の事態に備えてバックアップも取ることも意識しましょう。
リダイレクト設定は残し続ける
.htaccessファイルで行われるリダイレクト設定(301リダイレクト)は解除せず、そのまま残しておくことが大切です。
リダイレクト設定を解除することで、検索エンジンは転送元と転送先のページを別のページとして認識してしまい、評価が分散したり、転送先のページに評価を集められなくなったりする恐れがあります。
また、転送元のページを非公開にしていた場合、転送元のページのURLからアクセスしたユーザーは転送後のページにたどり着けなくなってしまい、ユーザビリティにも影響を及ぼすでしょう。
リダイレクト設定を行った場合は、基本的に解除せず永久的に残しておくようご注意ください。
ページ同士の関連性を意識する
リダイレクトを設定する際は、ページ同士の関連性も意識しましょう。
例えば、「http://www.sample.com/AAAA」というコラムページのURLのリダイレクト先にトップページのURLを設定しまった場合、コラムページを閲覧しようとアクセスしたユーザーがトップページに転送されてしまい、該当のページを探す手間や時間がかかってしまいます。
また、転送元と転送先のページが大きく異なる内容であった場合、検索エンジンからスパム行為と見なされてしまう恐れもあるため、ページ同士の関連性もあらかじめ確認しておきましょう。
参照:不正なリダイレクト|Google 検索セントラル
JavaScriptやmeta refreshの使用は避ける
リダイレクトの設定は、JavaScriptやmeta refreshでも行えますが、基本的にはこれらを使わず、.htaccessファイルを作成することをおすすめします。
JavaScriptやmeta refreshでは、アクセス解析に不具合が生じたり、適用させた際に検索エンジンからのSEO評価を引き継げないことがあったりするため、これらのリスクを抑えられる.htaccessファイルでのリダイレクト設定を行うとよいでしょう。
.htaccessが利用できるサーバーは限られている
ここまで、.htaccessファイルの作成方法や作成時の注意点などをご紹介しましたが、.htaccessファイルはすべてのWebサーバーでアップロードできるわけではありません。
.htaccessファイルをアップロードするには、サーバーが以下の条件を満たしている必要があります。
- Apacheがインストールされている
- Apache用のモジュールである「mod_Rewrite」をサポートしている
とはいえ、上記の条件は、以下のような大手のレンタルサーバーではすべて満たしているため、安心して.htaccessファイルを利用できるでしょう。
- Xserver
- お名前.com レンタルサーバー
- さくらのレンタルサーバ
- ステップサーバー
- ロリポップ!レンタルサーバー
- WADAX
ただし、NGINXなど一部のサーバーでは.htaccessファイルを使用できないため、あらかじめ自身が契約しているサーバーが利用可能か調べておくことをおすすめします。
まとめ
この記事では、リダイレクト設定を.htaccessファイルを用いて行う際のファイルの作成手順や記述方法、アップロード場所、ファイル作成時の注意点などを詳しくご紹介しました。
ファイルをアップロードする際は、誤った場所への設置や、変更の必要がないファイルの上書きおよび削除などを行うことで、ページが正常に表示されなくなるといったリスクがあるため、慎重に作業を進めることが大切です。
また、万が一上記のようなミスを起こした際もすぐに元の状態に復元できるよう、あらかじめバックアップを必ず取っておきましょう。