気づいた人はものすごく敏感な人だと思います。
実は、最近Fsikiは大規模なディレクトリ構造修正を行いまして、このLogJET内の記事が同サーバー内で大移動しました。
ある種、大きな賭けに出た。
そのために必要だったのがMovable Typeと.htaccessとExcelだったのですが…
記事を各カテゴリーごとのディレクトリに移動させた
MTを導入した当初からなーんも考えずに、初期設定のまま記事を投稿してきました。記事は単純に日付順でディレクトリに放り込まれていたわけです。
/jet/archives/2005/10/xxxx.html
ブログは日付順で並んで当たり前で、むしろ2005とか2006とかディレクトリに配置されているほうが管理しやすいと考えていました。ところが、実際は管理といってもMTの仕事なワケで、逆にディレクトリの中身が全く関連性のないバラバラの記事で構成されていることがだんだん気持ち悪く思い始めたのです。
ひとつのページが一枚の文書と考えると、関連性のある文書がまったく別のフォルダに入っているのは気持ち悪いわけです(もちろんカテゴリー重視で考えた場合の話で、日記ならば全く問題ない)。
例えば企業のサイトで、「会社情報」に属するページ「会社概要」が/recruit/に入っていたり、「企業理念」が/product/に入っていたりしたら気持ち悪いです。そっちの方が管理しづらいし。リンクで繋がっているんで、見た目上は問題ないんですけど。
あと、SEO的にディレクトリが違うと同じカテゴリーの記事同士の繋がりが弱くなるんじゃないかなーとか勝手に思っていたりして。あとディレクトリの階層が深いほうが検索ロボットに拾われにくいんじゃないかとか…。
とか、気になり始めて思い立ったわけです。
Movable Typeでページが生成される場所を変える
長くなるんでやり方は書きませんけど、とりあえずMTの設定を変えることで、ディレクトリ構造は簡単に変えられるわけです。
ページの重複が嫌だ
MTの設定を変えるだけで、この話自体は終わるはずなんですけど、古いページは残ったままになるんですよ(ダイナミックパブリッシングでページ作ってないので)。
古いページが残ったままの場合、検索ロボットはいつまでも古い記事を参照しちゃうんだろうなという憶測。そうなったら、古いページを全部削除したくなるわけで…。しかし、古いページ削除したら、今まで外部から頂いていたリンクが切れてしまう。
もともと、動的にページを表示させている場合は、URLを変えた時点でリンク切れを起こすわけですが。
ここで登場するのが.htaccessというわけです。.htaccessの解説もしません。長くなり過ぎる。
.htaccessで301リダイレクト
HTTPリダイレクトは、ページが今まであった場所から移動したことをブラウザとかクローラーとかに知らせる機能で、古いURLにアクセスすると自動的に引越し先に移動するという便利なものです。詳しくは
今回の場合、完全にページが引越ししたので「301 Moved Permanently」という方法を使いました。
しかしながら、ディレクトリ単位で引越しするような簡単な話ではなくて、今回はファイル単位の引越しだったのでこれまた一苦労。なにせ、190ある記事を一つずつリダイレクト設定しないといけないわけですから、大変。.htaccessに一行ずつ「元の場所」と「リダイレクト先」を書かないといけなかったわけです…。
使えるツールは使っとけ
まず、MTのファイル生成の設定を変える前に、現在の各ページのURLをずらずららららっと書き出します。適当なテンプレート作って
<MTEntries lastn="9999">
<$MTEntryPermalink encode_xml="1"$>
</MTEntries>
この記述でOK。生成されたURL一覧をExcelにコピペ。で、.htaccessの元もとの場所の記述は絶対パスじゃないとダメなのでhttp//~を置換で削除。
次に、MTのファイル生成の設定を変えて、再構築するとURL一覧が全部変わっているので、それを同じExcelにコピペ。
具体的には下記のような感じ。
Redirect permanent | 元のURL(絶対パスA) | 引越し先のURL(A) |
---|---|---|
Redirect permanent | 元のURL(絶対パスB) | 引越し先のURL(B) |
Redirect permanent | 元のURL(絶対パスC) | 引越し先のURL(C) |
で、Excelの内容をコピーして適当なエディタに貼り付けると、セルとセルの間がタブになっているので、置換で半角スペースにすれば、あれよあれよとリダイレクト用の.htaccessが出来上がります。
んー、ツールは使わないと損ですな。
SEOスパムだ
大きな賭けだと最初に書いた理由は、SEOスパムのレッテルを貼られる可能性があるからです。
以下、有名どころ参照してみてください。
って、もろスパムじゃぁないか…。でも、他にいい方法が無かったし…。
そもそも、このリダイレクトを使えばどこにでも訪問者を飛ばせてしまうので、いくらでも悪事が働けますし。
ところが、Googleさんはこうおっしゃる
HTTP 301 の(永久的な)リダイレクトを使用して、以前の URL から新しいサイトにリダイレクトするように設定すると、Google のクローラで新しい URL が認識されます。
んー。「絵文禄ことのは」さんのところの記事が2004年10月24日に書かれたということは、その後Googleの仕様が変わったのか?
なにより、公式が言うことを信用するのが一番良いか。でも、190個もリダイレクトしてたら怪しい…。.htaccessの中身って、ロボットは見えないんでしたっけ?んー。悩ましい。
Googleの技術力なら元のページとリダイレクト先のページの類似性は判断できそう(憶測)なので問題ないかな…。
あとGoogleのページランクは引き継げるのだろうか?
分かっていてやったので、まあSEOの実験も兼ねてってことで。
サイト内で最もページランクが高かったページ(ページランク4を叩き出していた)で様子見します。
1ヶ月後、Google八分になってたら手を叩いて笑ってください。