webサイトのドメインやページURLを変更した際にやっておきたい301リダイレクト設定


webサイトの引っ越しやリニューアル、webページ単体でコンテンツ改修・デザイン変更を行ったりする時に、URLを変更することがあります。
ドメインやURLの変更に関しては、今まで蓄積してきたwebサイトやwebページの評価がありますので、新しいURLでスタートするとSEO(Search Engine Optimization:検索エンジン最適化)的にもったいないです。
今までの評価がまた0からのスタートとなりますので、検索上位だったページが検索から見つけることができないなど、ユーザーの流入減少に繋がります。

そこでやっておきたいのが、301リダイレクト設定です。

リダイレクトとは、旧URLから新URLにアクセスを転送する設定になります。
301リダイレクトは、検索エンジンが旧URLの評価を新URLに引き継ぐことができるため、検索からのユーザーの流入の減少を抑えることができます。

ちなみに、リダイレクト設定には301と302がありますが、301は永久的な転送、302は一時的な転送となります。
サイトのメンテナンス時など、一時的に別ページに転送する場合に302リダイレクトを利用します。

今回は引っ越しやリニューアルといった時に、ドメインやURLの変更に伴う対応として、301リダイレクトの設定方法をご説明します。
設定にはWebサーバのApache(アパッチ)で利用できる「.htaccess」という設定ファイルに記述していきます。

リダイレクトのパターンはたくさんありますが、よく利用するであろう「ドメインの変更」「特定のwebページのURL変更」「ディレクトリの変更」の3つのパターンをご紹介します。


301リダイレクトの設定方法


301リダイレクト設定の書き方は「Redirect permanent」「RewriteRule」と2パターンあり、RewriteRuleによる転送設定は、Apacheのmod_rewriteモジュールにより利用できる機能になります。

多くのレンタルサーバではmod_rewriteモジュールが利用できると思いますが、一応確認しておいてください。
もしmod_rewriteモジュールが利用できないサーバの場合は、「Redirect permanent」のように、Redirectディレクティブを利用して301リダイレクトを行います。


ここでは2パターンとも紹介します。


ドメインだけ変更する場合


ディレクトリ構造もページURLもすべて同じで、旧サイトと新サイトの違いはドメインだけという場合には、ディレクトリ構造やページURLを引き継いだまま、ドメインを書き換える設定でリダイレクトを行っていきます。

Redirectでの設定

Redirect permanent / https://newdomain.com/


permanentは恒久的に転送するという意味で、「/」はドキュメントルートのドメイン直下を表し、ここへのアクセスは後述のドメインへとリダイレクトします。もちろんディレクトリ構造がすべて同じであることが前提で設定します。
ですので「https://olddomain.com/web/dark-mode-css」というURLも「https://newdomain.com/web/dark-mode-css」にリダイレクトされます。

RewriteRuleでの設定

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*) https://newdomain.com/$1 [R=301,L]
</IfModule>


「IfModule」はモジュールが有効かどうかで処理します。開始と終了のタグ内にリダイレクト設定を記述していきます。
RewriteEngineをonにして、書き換えを可能となりリダイレクトが有効となります。
「^(.)」という行頭からのすべての文字列を意味する正規表現を使い、後述で新ドメインに対して「$1」という置換文字列の変数を利用して、前述の「(.)」の文字列を入れてあげます。最後の「[R=301,L]」は301の宣言になります。
こうすることで、旧ドメインのページのアクセスが新ドメインのそのページにリダイレクトできるようになります。

正規表現が難しくてよく分からないという方は、そのままそういうものだとまずは覚えておきましょう。
そのうちに慣れます。


特定のwebページのURLを変更した場合


ちょっとしたコンテンツ改修・デザイン変更を行った際、今までよりもわかりやすいURLで新たにスタートさせたい時などには、ページのURLを変更することがあります。
そういった場合には、特定のwebページだけリダイレクト設定を行います。

例)
旧URL:https://example.com/oldpage.html
新URL:https://example.com/newpage.html

Redirectでの設定

Redirect permanent /oldpage.html https://example.com/newpage.html


RewriteRuleでの設定

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule  ^oldpage.html$ https://example.com/newpage.html [R=301,L]
</IfModule>


「https://example.com/oldpage.html」「https://example.com/newpage.html」とドメインが一緒の場合は、ドメインの記述は省いて大丈夫です。

ドメイン名部分を省くと以下のような記述になります。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule  ^oldpage.html$ newpage.html [R=301,L]
</IfModule>



もし、新URLではディレクトリが変わる場合は。

Redirect permanent /oldpage.html https://example.com/hoge/newpage.html


または、

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule  ^oldpage.html$ /hoge/newpage.html [R=301,L]
</IfModule>


のように設定します。

他にも、ディレクトリ構成に規則性がない場合には、1ページ毎にリダイレクト設定を行っていくことになります。
複数ページのリダイレクト設定の記述では、「RewriteEngine On」でのリダイレクトを有効は、一度記述するだけで有効になりますので、毎回記述する必要はありません。

気をつけてほしいのは、リダイレクト元とリダイレクト先のコンテンツにあまりにも違いがありすぎる場合です。
本来、特定のページの301リダイレクトはちょっとしたコンテンツ改修やデザイン変更をした際に、一緒に今までよりわかりやすいURLで新たにスタートしていく場合などで行いますので、コンテンツにかなり違いがあるとSEO的に逆効果になる恐れがあります。


ディレクトリ単位での301リダイレクト設定


ディレクトリ以下の構造はすべて同じで、ディレクトリだけ変更する場合もあります。

Redirectでの設定

Redirect permanent /olddir/ http://www.example.com/newdir/


もちろん、ドメイン名が同じであれば転送先は「/newdir/」だけでOKです。

RewriteRuleでの設定

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^olddir(.*)$ /newdir$1 [R=301,L]
</IfModule>



ディレクトリ以下も一応、正規表現を利用して合わせていくほうが正確でしょう。


まとめ


webサイトやwebページのドメイン・URLの変更は簡単ですが、長年運用しているサイトの評価を考えると、しっかりと301リダイレクト設定をして評価を引き継ぐ必要があります。

せっかくの評価も1からのスタートなるともったいないので、301リダイレクトは忘れずに設定しましょう。

はじめて正規表現を使うという方もいるかもしれませんが、見ているうちに慣れてくると思うのでそんなに心配はいりません。
触れていく中で覚えていきましょう。