301リダイレクトの使い方と.htaccessへの記述方法

サイトの移転や記事の移動など、恒久的にURLが変わる場合に用いられる301リダイレクト。
SEO上でも、それまでの被リンクでの評価を引き継ぐことができるため、URLを変更する場合は適切に転送を行っておきたい。
また、単一のコンテンツに複数のURLがあてられている場合、301リダイレクトを使うことでメインとするURLに統一することができる。これを正規化と呼ぶ。
ここでは.htaccess(ドット・エイチティーアクセス)を使った301リダイレクトの記述方法をまとめていく。

301と302リダイレクトの違いとは?

リダイレクトのステータスコードには301と302の2種類がある。
301リダイレクトは、サイト移転や構成の変更などで恒久的にURLが変わる場合に用いられる。
一方302リダイレクトは一時的なURLの変更に用いるためのステータスコードだ。
転送すると言っても恒久的なのか一時的なものなのかによってこの2つを使い分ける必要があるということだ。
しかしながら、301も302も、アクセスしてきたユーザーに適切なコンテンツを提示するという基本的な考え方は同じだ。

場面ごとの301リダイレクト記述方法

転送したいと言ってもその場面には様々な理由がある。
ドメインの移転、wwwありなしの統一(正規化)、記事単体の移動、ディレクトリーの変更など。
転送内容ごとの.htaccessへの301リダイレクト記述方法を以下にまとめていく。
ただし、サーバー側がWebサーバーにApache(アパッチ)を使っており、mod_Rewriteという機能をサポートしている必要がある。
あなたの契約しているホスティング会社のヘルプページなどで確認しておこう。

wwwありなしの正規化

独自ドメインで運用の場合、wwwありとなしで2つのURLが存在することになる。これをどちらかひとつに正規化する為に301リダイレクトを使用する。

wwwありで運用する場合
RewriteEngine on
RewriteCond %{HTTP_HOST} ^tmseek\.jp$
RewriteRule ^(.*)$ http://www.tmseek.jp/$1 [R=301,L]

※ ドメインは適宜変更してください。

wwwなしで運用する場合
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.tmseek\.jp$
RewriteRule ^(.*)$ http://tmseek.jp/$1 [R=301,L]

HTTPアクセスをHTTPSへリダイレクト

Googleが、ユーザー保護の観点からSSL/TLSプロトコルを用いたHTTPS化を推奨したことにより、多くのサイトがHTTPからHTTPSアクセスへと変更している。
Googleが提供するブラウザー『Chrome』でシークレットモードを利用したアクセスの場合、HTTPS化されていないサイトでは「保護されていない通信」という警告も表示される。
もはやHTTPS化は推奨ではなく必須だと言っても過言ではないだろう。

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.tmseek.jp/$1 [R=301,L]

※ ドメインは適宜変更してください。
上記記述のRewriteCond『%{HTTPS} off』は、「httpsではない場合」という意味で、その場合はRewriteRuleの『https://ドメイン』に転送するという記述となる。

wwwありのHTTPSへ正規化する場合

RewriteCondでのアクセス場合、RewriteRuleを適用し、そちらへ転送するという記述が基本となる。
つまり、上記のwwwありとHTTPSを合わせて記述する場合は以下のようになる。

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(tmseek\.jp)(:80)?
RewriteRule ^(.*)$ https://www.tmseek.jp/$1 [R=301,L]

ドメイン変更(サイト移転)の場合

新しく取得したドメインで今までのブログやサイトを運営する場合、旧ドメインにアクセスしてきたユーザーを新ドメインへ転送したい。
301リダイレクトを設定することにより、アクセスして来てくれたユーザーに、ページがないという404エラーを見せなくてすむ。
旧ドメインにアクセスしてきたユーザーを新ドメインに転送する為、301リダイレクトを記述した『.htaccess』ファイルは、旧ドメイン側に設置されている必要がある。
つまり、新ドメインに移転したとしても旧ドメインの契約を継続しなければならないという問題も含んでいることになる。
.htaccessへの記述は以下の通りだ。

RewriteEngine On
RewriteCond %{http_host} ^www.old-domain.com(:80)? [NC]
RewriteRule ^(.*) http://www.new-domain.com/$1 [R=301,L]

これは、「www.old-domain.com」を丸ごと「www.new-domain.com」に転送する為の記述だ。

ディレクトリの移動による301リダイレクト

ドメイン以下のディレクトリを別ディレクトリに移動した場合の記述だ。
これはディレクトリ名を書き換えるというルールの為、記事そのものへのアクセスの場合、そのURLが存在する必要がある。
つまり、
https://www.tmseek.jp/old-directory/A.php
の場合、
https://www.tmseek.jp/new-directory/A.php
へリダイレクトするという記述となる。
当然、新しいディレクトリ以下に『A.php』という記事が存在していなければ404エラーとなる。

RewriteEngine on
RewriteRule ^old_dir(.*)$ /new_dir$1 [R=301,L]

※ ディレクトリ名は適宜変更して欲しい。

個別ページ毎の301リダイレクト

ユーザーもGoogleも、記事を見にくる。そして記事に対して評価をしていく。
つまり、ドメインを転送しても、記事毎のリダイレクトが適切でない場合はユーザーには404エラーとなり、被リンクなどのGoogleの評価も引き継げない。
ドメインを移転し、さらに記事のファイル名規則も変更する場合は、記事ごとの301リダイレクト設定を行う必要がある。

個別ページURLのリダイレクト(ドメイン変更なしの場合)
RewriteRule ^/old-page$ /new-page [R=301,L]
個別ページURLのリダイレクト(ドメイン変更の場合)

旧ドメインから新ドメインの対応するページURLにリダイレクトする記述である為、.htaccessの記述は当然ながら旧ドメインの元に記載する。

RewriteRule ^/old-page$ https://www.tmseek.jp/new-page [R=301,L]

もしくは(上記でリダイレクトされない場合などは)、

redirect 301 /old-page https://www.tmseek.jp/new-page

と記述することでリダイレクトさせることができる。

東海地区ホームページ制作会社

お問合せ

ご依頼および業務内容へのご質問などお気軽にお問合せ下さい

集客からファン化へ
今抱える問題や悩みをお聞かせください。TeamSEEKが問題解決まで完全サポートいたします。

コメントを残す