htaccessのリダイレクト方法とは?重要性や書き方のテンプレートなどを一挙紹介!

htaccessのリダイレクト方法とは?重要性や書き方のテンプレートなどを一挙紹介!

公開日:2022/7/29
 最終更新日:2022/7/29

ホームページの引っ越しやURLの統一で利用する.htaccess(エイチティーアクセス)。
本記事では.htaccessを使った様々なリダイレクト方法をその記述と共にご紹介してまいります。

なお、ホームページ作成をご検討なら、Wepageをご検討ください。


01.htaccessの読み方

ホームページやブログを配信するサーバーの設定をする際に、ファイルの一覧表示で、拡張子が.htaccessとなっているファイルを目にすることがあります。
また、Webサーバーの設定に関する記事を見ている方も、一度は目にしていることがあるのではないでしょうか。

この .htaccessはWebサーバーを制御する機能を持ったファイルの1つで、「ドット・エイチティアクセス」と読みます。

.htaccessは、メモ帳などのテキストエディターで開くことができるテキストファイルで、Webサーバーの機能に関する命令文が記載されたテキストファイルです。

このファイルを、Webサーバーが管理するディレクトリ(フォルダー)に配置することで、パスワードを要求する認証画面の表示や、IPアドレスやドメイン名を指定したアクセス制限URLのリダイレクトなど様々な制御を実行することができます。

1-1..htaccessを利用する条件

手軽にWebサーバーの制御ができる .htaccessですが、利用するには2つの条件が必要です。

1つ目の条件は .htaccessとして利用するファイルの名前は「.htaccess」のみが使えます
例えば「a.htaccess」、「home.htaccess」など「.htaccess」以外の名前にした場合、記載されている命令文は実行されません。

また、ファイル名が固定なので1つのディレクトリに対して複数の .htaccessを保存することができません。

2つ目の条件は、利用するWebサーバーにApacheがインストールされている必要があります。
レンタルやホスティングで可動しているサーバーは、ほとんどの場合WebサーバーとしてApache が設定されていますが、他のWebサーバー(例えばMicrosoft IISなど)が設定されている場合には .htaccess を利用することができません。

また、Apacheがインストールされている場合でも .htaccessの設置や変更をユーザーに許可していない場合があります。
他の代替機能を提供している場合もありますが、詳細な設定をするのが難しい場合があるので .htaccessを使う場合には、事前に利用するサーバーの仕様を確認しておく必要があります。

.htaccessを利用する条件

02.htaccessを使うメリット

.htaccessで最も利用される機能はリダイレクトです。
リダイレクトはブラウザーから要求されたURLを別のURLに変換する機能で、自動転送と呼ばれています。

例えば、ホームページを別のサイトに引っ越しした際にURLの変更をした場合に、ブックマークしていた利用者や、他のページのリンク先からアクセスが途切れてしまい、引っ越し先のホームページが表示されなくなってしまう可能性があります。

その際に、リダイレクトを利用することで、ブックマークやリンク先から新しいホームページに転送してくれるため、安全にユーザーを誘導することが可能です。
また、検索エンジンへの対応を引き継ぐオプションを追加することでサイトの評価に影響を与えずにURLの転送を行うメリットがあります。

ホームページのリニューアルを検討されている方には、引っ越しをする際のSEO対策として重要なポイントになります。

2-1.リダイレクトのメリット

リダイレクトを利用することで、サイトのURLを統一して管理することができるため、次のようなメリットがあります。

  • ブックマークやリンク先として保存されたURLのデッドリンク化(リンク切れ)の防止
  • ステータスコード(後述)を使ったGoogleなど検索エンジンの評価への対応
  • 複数のURLによるコンテンツの重複化の防止

主に検索エンジンへの対策(SEO)としてのメリットが多いですが、URLを統一化して運用することで、PVなどアクセス解析をする際にも役立ちます

2-2.ステータスコード

.htaccessでは、4種類のステータスコード(301/302/303/307)を使って次のようなリダイレクトに関する制御ができます。
ほとんどの場合、リダイレクトでは301と302のステータスコードを使います。

ステータスコード 内容
301 恒久的に別のURLにリダイレクトする場合。
転送前のURLは今後利用されず、転送後のURLを利用するケース。(リニューアルなどでURLが変更になる場合など)
302 一時的に別のURLにリダイレクトする場合。
転送前のURLは今後も利用され、転送後のURLが一時的なケース(サーバーの障害などでエラーページに転送する場合や、パソコンやスマホ向けなど条件に応じてURLを使い分ける場合など)
303 フォーム情報付きのURLをGETメソッドに変換してリダイレクトする場合。
転送後のURLにフォーム情報をGETメソッドとして受け渡したいケース(問い合わせやアンケートなど情報を取得する場合など)
307 フォーム情報付きのURLのメソッドを維持した状態でリダイレクトする場合。
転送後のURLにフォーム情報を、そのまま受け渡したいケース(問い合わせやアンケートなど情報を取得する場合など)

2-3.リダイレクト期間

Googleなどの検索エンジンが、使われなくなったURLの評価を停止する期間は明確になっていませんが、1年くらいの期間を想定しておく必要があります。
そのため、リダイレクトを使ってURLの転送を検討する場合には、継続期間の目安として最低1年で考えることになります。

ただし、SEO対策を行っているホームページをリニューアルなどでURLを変更した場合、ブックマークやリンク先からの流入減少を防止するために、リダイレクトの解除をすることはなく半永久的にリダイレクトしているケースがほとんどです。

.htaccessを使うメリット

03リダイレクトの書き方とテンプレートを紹介

3-1.ドメイン名の変更した場合

ホームページの引っ越しを行い、その際にドメイン名を変更した場合(URLのドメイン名以外に変更が無い場合)には .htaccessに次のような記載を行います。

URLをwww.sample.com から www.example.net に変換して転送する場合
  • [.htaccess”]
    RewriteEngine On
    RewriteCond %{http_host} ^www.sample.com
    RewriteRule ^(.*) https://www.example.net/$1 [R=301,L]

ドメイン名以下のディレクトリ(フォルダー)にアクセス(例 www.sample.com/dir/page.html )された場合でも、新しいドメイン名を含んだディレクトリ(例 www.example.net/dir/page.html )にリダイレクトされます。

3-2.ディレクトリ名を変更した場合

コンテンツを保存しているディレクトリを変更した場合(URLの途中部分を変更する場合)には .htaccess に次のような記載を行います。

URLを www.sample.com/dir1/page.html から www.sample.net/dir2/page.html に変換してリダイレクトする場合
  • [.htaccess”]
    RewriteEngine on
    RewriteRule ^dir1(.*)$ /dir2$1 [R=301,L]

3-3.ファイル名を変更した場合

コンテンツを保存しているファイル名を変更した場合(URLの最後を変更する場合)には .htaccessに次のような記載を行います。

URLを www.sample.com/page1.html から www.sample.net/page2.html に変換してリダイレクトする場合
  • [.htaccess”]
    RewriteEngine on
    RewriteRule ^page1.html$ /page2.html [R=301,L]

3-4.すべてのURLを変更する場合

コンテンツを保存しているドメイン名やディレクトリ名、ファイル名を変更する場合(URLすべてを変更する場合)には .htaccess に次のような記載を行います。

URLを www.sample.com/dir1/page1.html から www.example.net/dir2/page2.html に変換してリダイレクトする場合
  • [.htaccess”]
    RewriteEngine on
    RewriteRule https://www.sample.com/dir1/page1.html
    https://www.example.com/dir2/page2.html [R=301,L]

3-5.リダイレクトから特定のディレクトリを除外する場合

一部のディレクトリをリダイレクトの対象から除外する場合には .htaccess に次のような記載を行います。

URLを www.example.net にリダイレクトする際に dir1 ディレクトリを除外する場合
  • [.htaccess”]
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_URI} !(^/dir1/)
    RewriteRule ^$ https:www.example.net [R=301,L]
リダイレクトの書き方とテンプレートを紹介

04SEOで使用されるリダイレクト

リダイレクト機能を利用することで、Googleなどの検索エンジンに関する評価(SEO)に影響を与えることができます。
SEOではサイト内のコンテンツ重複(異なるURLで同じコンテンツが表示される場合など)で評価に影響が出るため、表示されるコンテンツに対するURLを統一しておくことが重要になります。

4-1.URLをサブドメインに統一

ホームページを表示する際に「https://www.sample.com/」でも
「https://sample.com/」でもアクセスできる設定の場合、ユーザーに対しての使い勝手としてはメリットがあります。

しかし検索エンジン側から見た場合に別のURLで同じコンテンツを配信していると判断されてしまい、サイトの評価が下がるデメリットになります。

次のように .htaccessを利用して「https://www.sample.com/」にリダイレクトを行い、URLを統一化することで検索エンジンに対する対策を行うことができます。

  • [.htaccess”]
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^sample\.com$
    RewriteRule ^(.*)$ https://www.sample.com/$1 [R=301,L]

4-2.サブドメインからURLをリダイレクト

サブドメインへのリダイレクトとは逆に、URLのドメイン名部分を「sample.com」に統一する場合には、次のように .htaccessの記載を行います。

  • [.htaccess”]
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^www\.sample\.com$
    RewriteRule ^(.*)$ https://sample.com/$1 [R=301,L]

4-3.URLの最後を統一する場合

Webサーバーにはデフォルトページ(ファイル名を省略してアクセスされた場合に表示される既定値)の設定があります。

例えば、デフォルトページにindex.htmlが設定されている場合、次のようなURLを使ってアクセスした場合、ブラウザーには同じページが表示されます。

  • https://www.sample.com/home
  • https://www.sample.com/home/index.html

ドメイン名と同様に、ユーザーにとってデメリットはありませんが、検索エンジンから見た場合に別のURLとして判断されます。

例えば、次のような記載をすることで、URLの末尾をすべて統一した形でアクセスするようになります。

  • [.htaccess”]
    RewriteEngine on
    RewriteCond %{THE_REQUEST} ^.*/index.html
    RewriteRule ^(.*)index.html$ https://www.sample.com/$1 [R=301,L]

4-4.すべてのアクセスをhttps接続にする場合

今日広く使われるようになった、サーバー証明書を使った接続(常時SSL)を導入した場合に、従来の接続(http://)とSSLを使った接続(https://)の混在も、重複コンテンツの対象となり注意が必要です。

次のような記載を行うことで、サイトへのアクセスをすべてSSL接続(https://)に統一することができます。

  • [.htaccess”]
    RewriteEngine on
    RewriteCond %{ HTTPS} off
    RewriteRule ^(.*)$ https://%{ HTTP_HOST}%{REQUEST_URI} [R=301,L]
SEOで使用されるリダイレクト

05検索エンジンの評価をブロックする場合

ここまで検索エンジンの評価を引き継ぐ(サイトの評価を下げない)リダイレクトの手法を紹介してきましたが、転送先のURLに評価を無効にしてリダイレクトすることもできます。

2回に分けてリダイレクトを行い、1回目のリダイレクト先で検索エンジンをブロックしてから2回目のリダイレクトで本来の転送先を指定します。

具体的には次のような方法でリダイレクトを行います。

URLを www.sample.com から www.sample.net に検索エンジンの評価をブロックしてリダイレクトする場合
  1. 一時的に転送するディレクトリを新しく作成(例 temp)します。
  2. 転送元URLへのアクセスを作成した一時ディレクトリ(例 temp)にリダイレクトします。
  • [.htaccess”]
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !/temp
    RewriteRule ^(.*)$ /temp/ [R,L]
  1. 転送先の一時ディレクトリ(例 temp)に、次のコードを追加したrobots.txtを配置して検索エンジンの追跡をブロックします。
  • [robots.txt”]
    user-agent: *
    disallow: /blocked
  1. 次の .htaccessを配置して、本来の転送先にURLにリダイレクトします。
  • [.htaccess”]
    RewriteEngine on
    RewriteCond %{http_host} ^www.sample.com
    RewriteRule ^(.*) https://www.sample.net/$1 [R=301,L]
検索エンジンの評価をブロックする場合

06デバイスによるURLの振り分け

サイトにアクセスするデバイス(パソコンやタブレット、スマートフォンなど)に対応したコンテンツを別のURLで用意している場合に、参照先のデバイスの種類に応じて別のURLにリダイレクトできます。

例えば、iPhoneやAndroid端末などスマートフォン向けのブラウザーでアクセスされた場合に、「/s/」ディレクトリ(フォルダー)にリダイレクトする場合には次のように記載を行います。

  • [.htaccess”]
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_URI} !/s/
    RewriteCond %{HTTP_USER_AGENT} (iPhone|Android)
    RewriteRule ^(.*)$ sp/$1 [R]

スマートフォンのブラウザーでサイトにアクセスした場合にリダイレクトが発生します。

デバイスによるURLの振り分け

07.htaccessリダイレクトの注意点

7-1.バックアップ

サーバーに作成した .htaccessを配置する前にサイト全体のバックアップをしておくことが重要です。
アップロードしたファイルに間違いがあった場合や、配置する場所を間違えた場合に、サイトに不具合が発生して、表示されないなど不測の事態に陥るリスクがあります。

万一、不具合が発生した場合でもバックアップがある場合にはすぐに元に戻すことができるため、エラーによるダウンタイムを短くすることができます。

また .htaccessは、サーバー内の複数のディレクトリ(フォルダー)に同じ名前のファイルを配置することが多いため、アップロード時の間違いが発生しやすい作業です。

作業中に想定外のエラーや不具合が発生した場合に備えて、バックアップを用意しておくことは重要です。

7-2.無限ループへの対策

リダイレクトの設定で特徴的な不具合に「無限ループ」があります。

例えば、次の例のように「a.htmlからb.htmlへのリダイレクト」と「b.htmlからa.htmlへのリダイレクト」を同時に設定した .htaccessを配置した場合、サイト内でリダイレクトが繰り返される「無限ループ」が発生します。

  • [.htaccess”]
    RewriteEngine on
    RewriteRule ^a.html$ /b.html [R=301,L]
    RewriteRule ^b.html$ a.html [L]

最終的に利用者のブラウザーにはエラー画面が表示されますが、サーバー内部では繰り返される処理の負荷でサイト全体に影響を与える場合があります。

例では分かりやすく無限ループになる設定を記載していますが、他にも無限ループになるケースは多く考えられるため、ファイルをアップロードする前に事前に十分な確認を行う必要があります。

7-3.WordPressを使っている場合の注意点

ブログやホームページにWordPressを利用している場合には既に.htaccess作成され、以下のよう #BEGIN WordPressから#END WordPressに囲んだ部分をWordPressが利用しています。

  • [.htaccess”]
    # BEGIN WordPress
    # The directives (lines) between "BEGIN WordPress" and "END WordPress" are
    # dynamically generated, and should only be modified via WordPress filters.
    # Any changes to the directives between these markers will be overwritten.
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>

    # END WordPress

.htaccessの設定を行う場合に、新しく.htaccessを上書き保存してしまうとWordPressが正常に動作しなくなる可能性があるため注意が必要です。

また、追加で編集する場合には、#BEGIN WordPress~#END WordPress よりも下の行に記載を行う必要があります。

7-4.metaタグとJavaScriptの使用

.htaccessを利用した、リダイレクト処理の他にも HTMLのmetaタグを使う場合や、JavaScriptをページに埋め込んでリダイレクトを行う方法があります。

metaタグを使ったリダイレクト
  • <meta http-equiv="refresh" content="0;URL=https://www.sample.com/index.html">
JavaScriptを使ったリダイレクト
  • <script>
     window.location.href('https://www.sample.com/')
    </script>

いずれの場合も別のURLに転送する処理が実行されますが、検索エンジンの評価を引き継いで転送されないため、意図的に検索エンジンに関する影響を考慮しない場合を除いて .htaccess を使ったリダイレクトにメリットがあります

7-5.リダイレクトの削除

ステータスコードに301(恒久的な別のURLへのリダイレクト)を設定したリダイレクトをしている場合に、転送元のサイトを停止しない間はリダイレクト設定の削除は行わず継続する必要があります

転送元のサイトが動作している状態で、リダイレクト設定を削除してしまうと、検索エンジンから別のサイトとして判断されてしまうため、それぞれのサイトで評価を下げてしまうデメリットがあります。

その他にも、転送元のURLがブックマークに保存されている場合や、別サイトにリンクが設定されている場合に、サイトへの流入ができなくなるリスクもあるため、リダイレクト設定を途中で削除や変更せずに運用するケースが一般的です。

7-6.適切なリダイレクト先

リダイレクト処理では、転送される側のサイトにも注意が必要です。

例えば、リダイレクト先のサイトとURLの構造やページの名前を大幅に変更してしまった場合や、転送元と転送先のページの内容が大きく異なっている場合には、ユーザーにとっては期待していたページが表示されず、サイトから離脱しまうケースが考えられます。

同様に、検索エンジンに関してもリダイレクトする前のページと後で、内容が異なるという判断になってしまうため。サイトの評価に影響が出てしまう可能性も考えられます。

.htaccessを利用したリダイレクト自体は、簡単に記載して実行できますが、リダイレクト先で表示されるページの内容でユーザーや検索エンジンの評価を下げてしまう可能性があるため、設定内容については十分な検討を行う必要があります。

.htaccessリダイレクトの注意点

08まとめ

今回は、次のような .htaccessを使った様々なリダイレクト方法をご紹介しました。
URLを変換して別のURLに転送する機能だけでも、サイトで様々な手段として応用することができます。

ドメイン名やディレクトリ、ファイルなど条件を指定して別のURLに転送

リダイレクトする条件(特定のドメイン名やディレクトリ名、またはファイル名など)を含んだURLを指定して、別のURLに転送することができます。

ステータスコードを使って、検索エンジンに影響を与えない転送

検索エンジンに重複コンテンツと識別させないように別のサイトに転送する設定の他に、完全に検索エンジンの影響をブロックして転送することができます。

URLの正規化を利用して複数のURLで表示されるページの統合化

SSL導入時の接続方法(https://)の統一や、サブドメインやファイル名の有無など複数のURLで表示されるページを統合化して、検索エンジンの重複コンテンツに関する評価の対策ができます。

ぜひ、ホームページのリニューアルをする際に参考にしてください。

もしホームページの作成をご検討されている場合には、簡単な操作でコンテンツの作成ができる弊社の「Wepage」もご検討ください。
Wepageは、専門的な知識が必要なく直感的な操作でページを制作が可能です。

Wepageでは無料プランをご用意しておりますので、まずはお気軽にご利用ください!


関連記事



― Let's Share! ―