SEO(検索エンジン最適化)対策において、WebサイトのURL構造は重要な要素です。URL構造を変更する際、適切なリダイレクト設定を行わないと、検索順位が下落したり、ユーザーがサイトから離れてしまう可能性があります。
リダイレクト設定でよく使われるのが、Webサーバーソフトウェア「Apache」の設定ファイル.htaccess
です。.htaccess
ファイルを利用することで、特定のURLにアクセスがあった際に、自動的に別のURLに転送することができます。
しかし、.htaccess
ファイルの設定を誤ると、Webサイトが表示されなくなるなど、深刻な問題を引き起こす可能性があります。そのため、設定手順を正確に理解し、慎重に進める必要があります。
この記事では、.htaccess
リダイレクトの基本的な知識から、具体的な設定方法まで丁寧に解説します。 すでにご存知の方は、下記の表でリダイレクト設定の記述例をご確認ください。
パターン | 記述内容 | 説明 |
---|---|---|
単純なURLのリダイレクト | Redirect 301 /old-page.html /new-page.html | 特定のページを別のページにリダイレクト |
ディレクトリ単位のリダイレクト | RewriteCond %{HTTP_HOST} ^example.com$ [NC] RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] | 特定の条件を満たす場合にのみリダイレクト |
条件付きリダイレクト | RewriteRule ^blog/([0-9]+)/$ /news/$1/ [R=301,L] | より複雑な条件でのリダイレクト |
正規表現を使ったリダイレクト | RewriteRule ^blog/([0-9]+)/$ /news/$1/ [R=301,L] | 複雑な条件でのリダイレクト |
HTTPSへのリダイレクト | RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] | HTTPでアクセスがあった場合にHTTPSにリダイレクト |
wwwあり・なしの統一 | wwwありを正規URLにする場合 RewriteCond %{HTTP_HOST} ^example.com$ [NC] RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] wwwなしを正規URLにする場合 RewriteCond %{HTTP_HOST} ^www.example.com$ [NC] RewriteRule ^(.*)$ https://example.com/$1 [R=301,L] | wwwありのURLとwwwなしのURLを統一 |
ドメインのリダイレクト | RewriteCond %{HTTP_HOST} ^old-domain.com$ [NC,OR] RewriteCond %{HTTP_HOST} ^www.old-domain.com$ [NC] RewriteRule ^(.*)$ https://www.new-domain.com/$1 [R=301,L] | Webサイトのドメインを変更 |
.htaccessを利用したリダイレクト
.htaccessリダイレクトとは、Webサーバーソフトウェア「Apache」の設定ファイル.htaccess
を利用して、特定のURLへのアクセスを自動的に別のURLへ転送する仕組みです。この設定はサーバー側で処理され、ユーザーのブラウザには新しいURLが表示されます。
.htaccess
ファイルは、Webサーバー上でWebサイトの様々な設定を制御するためのファイルです。その機能の一つとして、リダイレクト設定があります。
例えば、WebサイトのURLを変更した場合や、ページを削除した場合などに、旧URLへのアクセスを新URLに転送することで、ユーザーがリンク切れのページに遭遇することを防ぎ、SEO評価の損失を防ぐことができます。
.htaccessリダイレクトは、Webサイトの運営において非常に重要な役割を果たします。特に、サイトリニューアルやURL変更の際には、適切なリダイレクト設定を行うことで、ユーザー体験を損なうことなく、SEO効果を維持・向上させることができるでしょう。
.htaccessリダイレクトの用途
.htaccess
リダイレクトは、主に以下の用途で活用されます。
用途①|Webサイトの移転・リニューアル
Webサイトを移転したり、リニューアルしたりする際に、URLが変更されることがあります。このとき、.htaccessリダイレクトを設定することで、旧URLにアクセスしてきたユーザーを自動的に新URLに転送することができます。
これにより、旧URLで獲得していたSEO評価を新URLに引き継ぐことができ、検索順位の低下を防ぐことができます。また、ユーザーにとっても、リンク切れによるストレスを感じることなく、スムーズに新しいページにアクセスすることができます。
例えば、以下のようなケースで.htaccessリダイレクトが有効です。
- ドメインを変更する場合
- URL構造を大幅に変更する場合
- ページの統合や削除を行う場合
用途②|URLの正規化
同じコンテンツが複数のURLでアクセスできる状態を「重複コンテンツ」と呼びます。重複コンテンツは、SEO評価を分散させてしまうため、検索順位の低下に繋がる可能性があります。
.htaccessリダイレクトを利用することで、正規URL(優先的に表示させたいURL)以外へのアクセスを正規URLに転送し、重複コンテンツの問題を解消することができます。
例えば、以下のようなケースで正規URLを統一します。
- wwwありのURLとwwwなしのURL
- index.htmlありのURLとindex.htmlなしのURL
- 大文字と小文字が混在しているURL
- パラメータが付いているURLと付いていないURL
用途③|エラーページへの誘導
Webサイトで存在しないページ(404 Not Foundエラー)にアクセスがあった場合、ユーザーは離脱してしまう可能性が高くなります。.htaccessリダイレクトを利用することで、404エラーページにアクセスしてきたユーザーを、トップページや関連性の高いページに誘導することができます。
これにより、ユーザーの離脱を防ぎ、サイト内での回遊を促進することができます。また、検索エンジンにとっても、サイト内のリンク構造が整理されていると判断され、SEO評価の向上に繋がる可能性があります。
例えば、以下のようなページにアクセスがあった場合に、適切なページに誘導することができます。
- 削除したページ
- URLを変更したページ
- スペルミスのあるURL
.htaccessリダイレクトの設定方法
.htaccessリダイレクトとは、Webサーバーソフトウェア「Apache」の設定ファイル.htaccess
を利用して、特定のURLにアクセスがあった際に、自動的に別のURLに転送する仕組みです。
ここでは、.htaccessリダイレクトの設定方法をステップごとにご紹介します。
STEP①|.htaccessファイルの確認
まず、Webサーバーのルートディレクトリ(通常はpublic_html
)に.htaccess
ファイルがあるか確認します。ルートディレクトリは、Webサイトのファイルが保存されている一番上の階層のディレクトリです。ここでは、以下の二つのケースでの対応方法について解説していきます。
- ファイルがある場合
- ファイルがない場合
ファイルがある場合
既存の.htaccessファイルをダウンロードし、バックアップを取っておきます。.htaccessファイルは、Webサーバーの設定を直接制御するため、記述を誤るとWebサイトが表示されなくなるなど、深刻な問題を引き起こす可能性があります。
バックアップを取っておくことで、万が一設定を誤った場合でも、元の状態に戻すことができます。バックアップは、ローカルPCに保存したり、クラウドストレージにアップロードしたりするなど、安全な場所に保管するようにしましょう。
ファイルがない場合の.htaccessの設置場所
.htaccess
ファイルが見つからない場合は、新規作成する必要があります。手順としては以下の通りです。
- テキストエディタ(メモ帳など)を開き、何も記述しない空のファイルを作成します。
- ファイル名を
.htaccess
(ドットから始まる)で保存します。 - FTPソフトなどを使って、作成した
.htaccess
ファイルをWebサーバーのルートディレクトリ(一番上の階層)にアップロードします。
.htaccessファイルは、Webサーバーの設定ファイルの中でも特別な存在で、通常は隠しファイルとして扱われます。
隠しファイルとは、ファイル名またはフォルダ名の先頭に「.」 (ドット) が付いているファイルやフォルダのことです。通常、ファイルマネージャーやFTPソフトでは表示されず、特別な設定を行うことで表示できるようになります。.htaccessファイルを隠しファイルにする主な理由は以下の通りです。
STEP②|リダイレクト設定の記述
続いて、ダウンロードまたは新規作成した.htaccess
ファイルに、リダイレクト設定を記述します。リダイレクト設定は、以下の形式で記述します。
Redirect [ステータスコード] [旧URL] [新URL]
ステータスコードには、301と302のの二つの種類があります。多くの場合、301を使用することがほとんどですので、ここでは301の記述例について解説していきます。
ステータスコード | 説明 | 用途 | 旧URL | 新URL |
---|---|---|---|---|
301 (恒久的) | URLが恒久的に変更されたことを示す | サイトリニューアル、ドメイン変更など | 変更前のURL | 変更後のURL |
302 (一時的) | URLが一時的に変更されたことを示す | システムメンテナンス、一時的なキャンペーンページなど | 一時的に変更されたURL | 変更後のURL |
例えば、/old-page.html
から /new-page.html
に恒久的にリダイレクトしたい場合は、以下のように記述します。
Redirect 301 /old-page.html /new-page.html
/old-directory/
配下のすべてのページを /new-directory/
配下の対応するページにリダイレクトしたい場合は、以下のように記述します。
RedirectMatch 301 ^/old-directory/(.*)$ /new-directory/$1
.htaccessファイルを編集・アップロードしたら、必ず動作確認を行いましょう。ブラウザで旧URLにアクセスし、正しく新URLにリダイレクトされるか確認します。もしリダイレクトが正しく動作しない場合は、.htaccessファイルの記述に誤りがないか、再度確認しましょう。
STEP③|動作確認
.htaccessファイルを編集・アップロードしたら、必ず動作確認を行いましょう。
ブラウザで旧URLにアクセスし、正しく新URLにリダイレクトされるか確認します。 リダイレクトが成功すると、ブラウザのアドレスバーに新しいURLが表示されます。
もしリダイレクトが正しく動作しない場合は、.htaccessファイルの記述に誤りがないか、再度確認しましょう。記述に誤りがあると、Webサイトが表示されなくなる可能性があるため、注意が必要です。
【パターン別】.htaccessリダイレクトのコードの書き方
.htaccessリダイレクトには、様々なパターンが存在します。ここでは、よく使われるパターンと具体的な設定例を紹介します。
パターン①|単純なURLのリダイレクト
ある特定のページを別のページにリダイレクトする場合に使います。例えば、製品ページのリニューアルなどで、URLが変更になった場合に有効です。 旧URLへのアクセスがあった場合、新しいURLへ自動的に転送されます。これにより、旧URLで獲得していたSEO評価を引き継ぎ、検索順位の低下を防ぐことができます。
また、ユーザーにとっても、リンク切れによるストレスを感じることなく、スムーズに新しいページにアクセスすることができます。
Redirect 301 /old-page.html /new-page.html
/old-page.html
にアクセスがあった場合、/new-page.html
にリダイレクトされます。
パターン②|ディレクトリ単位のリダイレクト
特定のディレクトリ配下のすべてのページを別のディレクトリにリダイレクトする場合に使います。例えば、サイトリニューアルでディレクトリ構造が変わった場合などに役立ちます。
旧ディレクトリ内のすべてのページは、新しいディレクトリ内の対応するページにリダイレクトされます。これにより、ディレクトリ構造の変更に伴うリンク切れを防ぎ、SEO評価を維持することができます。
RedirectMatch 301 ^/old-directory/(.*)$ /new-directory/$1
/old-directory/
配下のすべてのページは、/new-directory/
配下の対応するページにリダイレクトされます。
パターン③|条件付きリダイレクト
特定の条件を満たす場合にのみリダイレクトする場合に使います。例えば、特定のブラウザからのアクセスのみリダイレクトする、といったことも可能です。
これにより、特定の条件下でのみリダイレクトを行うことができ、より柔軟なサイト運営が可能になります。
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
この例では、example.com
(wwwなし)にアクセスがあった場合に、https://www.example.com/
(wwwあり)にリダイレクトされます。
パターン④|正規表現を使ったリダイレクト
より複雑な条件でのリダイレクトを行う場合に使います。正規表現の知識が必要となりますが、柔軟なリダイレクト設定が可能です。例えば、ブログ記事のURL構造を変更する場合などに利用できます。
正規表現を使用することで、特定のパターンにマッチするURLのみをリダイレクトしたり、URLの一部を書き換えたりすることができます。
RewriteRule ^blog/([0-9]+)/$ /news/$1/ [R=301,L]
この例では、/blog/
配下にある数字で終わるURLを、/news/
配下の同じ数字で終わるURLにリダイレクトします。
パターン⑤|HTTPSへのリダイレクト
HTTPでアクセスがあった場合に、HTTPSにリダイレクトする場合に使います。WebサイトをSSL化(HTTPS化)する際に必須の設定です。 HTTPでのアクセスをHTTPSにリダイレクトすることで、通信の安全性を確保し、ユーザーの個人情報や決済情報を保護することができます。
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
パターン⑥|wwwあり・なしの統一
www
ありのURLとwww
なしのURLを統一する場合に使います。
どちらを正規URLにするかによって設定が異なります。 正規URLを統一することで、重複コンテンツの問題を防ぎ、SEO評価を集中させることができます。
# wwwありを正規URLにする場合
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# wwwなしを正規URLにする場合
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
パターン⑦|ドメインのリダイレクト
Webサイトのドメインを変更する場合に使います。
旧ドメインへのアクセスがあった場合、新しいドメインへ自動的に転送されます。これにより、旧ドメインで獲得していたSEO評価を新ドメインに引き継ぎ、検索順位の低下を防ぐことができます。
RewriteCond %{HTTP_HOST} ^old-domain\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.old-domain\.com$ [NC]
RewriteRule ^(.*)$ https://www.new-domain.com/$1 [R=301,L]
この例では、old-domain.com
(wwwあり・なし)にアクセスがあった場合に、https://www.new-domain.com/
にリダイレクトされます。