今回新しいサイトを作りまして、以前のサイトのコンテンツをこちらのサイトにお引越しさせていただきましたが、それがなかなか面倒で、それでいてすぐ忘れてしまうようなことなので、ここにメモしておきます。
サイトを移転して、コンテンツも移動したら、それでお終いというわけではありません。今までサイトを見に来てくれた人に「サイトのお引越し」を教えてあげたほうが良いでしょう。
また、検索エンジンにも教えてあげないと、「あれ?同じ内容のサイトが二つもあるぞ。悪いことやってんな」とミラーサイト扱いを受けて、検索エンジンに嫌われちゃうらしいです。
301リダイレクト
そこで行うのが「301リダイレクト」というもので、前のサイトにアクセスすると、勝手に新しいサイトのほうへ飛ばしてくれるというもの。よく古いサイトに行くと、「○秒後に新しいサイトに移動します」とかあれの類。
だけど、これで面倒くさいのが、新しいサイトのトップページにすべて移動させるのではなく、同じコンテンツのあるリンクへ飛ばすことが望ましいそうです。そのようにGoogleさんも言っているそうです。
・参考サイト
ページの URL の変更と 301 リダイレクトの使用
.htaccessの設定方法
それで301リダイレクトの仕方ですが、.htaccessファイルに記述をすることでできます。.htaccessファイルの作り方ですが、メモ張などで「.htaccess」というタイトルでファイルを作ると、「.htaccess.txt」というファイルができますので、そのファイルをFTPクライアントで旧サイトのルートディレクトリにアップロードしてから、名前変更で「.htaccess」に変更すればOKです。
301リデイレクトの記述方法(個別ページ)
.htaccessファイルの中身ですが、僕はXOOPSで作られたサイトだったので、静的ページと動的ページ(クエリのあるページ?)がありました。まず静的ページから。
「http://oldsite.com/modules/pico/content0020.html」というページにアクセスしたら、「https://mlog.xyz/new-page020/」にリダイレクトしたい場合は以下のように.htaccessファイルに記述します。
Redirect 301 /modules/pico/content0020.html https://mlog.xyz/new-page020/ |
旧サイトはルートディレクトリ以下から記述します。最後に改行を入れないとうまく作動しないそうです。
301リデイレクトの記述方法(クエリのあるページ)
クエリのあるページとは、サイトURLの最後が.php?bid=01とか.php?id=01とかphpで作られた動的なページのことを言います。このようなページは上のようなやり方だとうまくいかないようなので、RedirectではなくRewriteを使います。
「http://oldsite.com/modules/d3blog/details.php?bid=30」というページにアクセスしたら、「https://mlog.xyz/new-blog030/」にリダイレクトしたい場合は以下のように.htaccessファイルに記述します。
RewriteEngine on RewriteCond %{QUERY_STRING} (^|&)bid=30(&|$) RewriteRule ^modules/d3blog/details.php$ https://mlog.xyz/new-blog030/? [L,R=301] |
なぜこのように書くか、記述の意味は詳しくわかりません。新サイト側の最後は「?」を記入します。最初「?」を入れないで記述したら、リダイレクト先が「https://mlog.xyz/new-blog030.html」になってしまいました。なぜかは分かりませんが、「?」を入れたらうまくいきました。こちらも最後の改行は忘れずに。
大量のページを301リダイレクトする
上記の方法で記述した僕の.htaccessは以下のような感じです。
RewriteEngine onRewriteCond %{QUERY_STRING} (^|&)bid=30(&|$) RewriteRule ^modules/d3blog/details.php$ https://mlog.xyz/new-blog030/? [L,R=301] RewriteCond %{QUERY_STRING} (^|&)bid=31(&|$) Redirect 301 /modules/pico/content0021.html https://mlog.xyz/new-page021/ |
最後に記述してあるのは、「http://oldsite.com/」を「https://mlog.xyz/」にリダイレクトってことです。ドメイン全体ってことです。これでうまくいきました。
このような.htaccessファイルを作ったのですが、サイトのページ数があるととても大変です。Excelを使ってリダイレクトのコードを作成してたサイトをヒントにさせていただいて、僕もExcelを使って作りました。
参考サイト
・htaccess /?p=123の様なクエリストリングを含むURLを特定ディレクトリにリライトする方法 | superChemical
・PHPのページをWordPressのブログに301リダイレクトする。 | btmup Blog
・ここ数週間でやってきたことまとめ - 301リダイレクト記述方法
まとめ
サイト移転を決めてから、以前のサイトのインデックス数やページランクや外部リンク数や検索結果を何とか引き継げないかと考えていました。301リダイレクトをすることによって多少変わるかもしれませんが、できることだけでもしておきたかったので、とても満足です。
コメント