スポンサードリンク

【mod_rewrite】旧ドメインから新ドメインにリダイレクトする

サイトのドメインを変更した場合、全ページのURLが変更されて旧ドメインでのアクセスは(何もリダイレクト設定がされていない場合は)エラーとなります。

これだとアクセスしてきたユーザーにとってもSEO的にもよろしくありません。

この場合、mod_rewriteを利用して新ドメインへリダイレクトしてあげれば解決します。

スポンサードリンク

新ドメインへのリダイレクト

このページはmod_rewriteの利用方法の説明ページです。

単純にドメイン変更時のリダイレクト処理をしたい場合は「.htaccess」を使ってリダイレクトする方法を参照してください。

環境

旧ドメインから新ドメインへリダイレクトする方法を説明する前に、環境を整理しておきます。

  • 新ドメイン
    △△△.net
  • 旧ドメイン
    ○○○.com
  • 旧ドメインのルートディレクトリ
    /var/www/html/○○○/

新ドメインにリダイレクトする方法

ディレクトリ名やファイル名はそのままで、ドメインのみ変更した場合は、旧ドメインのルートディレクトリに以下を記述した「.htaccess」を設置すれば、旧ドメインへのアクセスはすべて新ドメインへ301リダイレクトされます。

RewriteEngine On
RewriteRule ^(.*)$ http://△△△.net/$1 [R=301,L]

これで「http://○○○.com/piyo.html」でのアクセスがあった場合、「http://△△△.net/piyo.html」にリダイレクトされます。

また、「http://○○○.com/test/hoge.html」では「http://△△△.net/test/hoge.html」にリダイレクトされます。

もちろん「http://○○○.com/」は「http://△△△.net/」になります。

解説

「http://○○○.com/test/hoge.html」でアクセスがあった場合、RewriteRuleには「test/hoge.html」が渡され、パターン部分「 ^(.*)$」とマッチするか確認されます。

なお、「^(.*)$」は正規表現で構成されており、いかなる文字列ともマッチするので、「test/hoge.html」と「^(.*)$」はマッチし、URL書き換え処理が実行されます。

すなわち、URLが「http://△△△.net/test/hoge.html」に書き換えられ、フラグの「R=301」で301リダイレクトされます。

「$1」はパターン「^(.*)$」の「(」と「)」で囲まれた部分を意味します(これを「後方参照」といいます)。


Warning: count(): Parameter must be an array or an object that implements Countable in /home/yskymk/www/000web/ysklog/mod-rewrite/wp-includes/class-wp-comment-query.php on line 405

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント