さて、よく考えてみれば古いURLから全記事の転送なんかせず、古いのは古いまま、新しい記事は新しいほう、とやればそれでいいのでは、という気もしないではないですが、もうやり始めてしまったからには仕方ありません。
さくらのブログは、編集画面の「デザイン-HTML」でテンプレートをカスタマイズすることができます。
.htaccessが使えない以上、meta refreshで飛ばしてしまうほかないというお話の続きです。
前回までのあらすじ。
日付をURLの末尾にくっつけて飛ばす方法がどうしてもわからないので、タイトルをURLにくっつけて飛ばす方法を採用しました。
ヘッダに
<meta http-equiv="refresh" content="10;URL=http://www.digitalboo.jpn.org/blog/<% extra_title %>/">
を書き足します。
WordPressのほうはパーマリンクで
/%postname%
を指定し、これによって、例えば以前の記事
http://digitalboo.sblo.jp/article/55868036.html(記事タイトルは「移転」)は http://www.digitalboo.jpn.org/blog/移転
と変換され、見事転送されます。
今回はこれをさらに改良します。
さて、単純なメタリフレッシュですが、これで上手くいくのは個別記事のみです。
ブログですから、カテゴリーアーカイブや日付アーカイブなどいろんな出力がありまして、これらは上手く動きません。自動で生成されるアーカイブページのタイトルをいちいち合わせることなど不可能というか大変面倒くさいからです。
Seesaaの独自タグ一覧を載せてくれているページをじーっと見ていると、便利そうなタグがありました。
if関連のタグ(<% if:○○ %>~<% /if -%>)
<% if:page_name eq ‘article’ -%> もし個別記事ページなら以下のソースを有効
<% if:page_name eq ‘archive’ -%> もし過去ログページなら以下のソースを有効
<% if:page_name eq ‘category’ -%> もしカテゴリページなら以下のソースを有効
これですね。これを利用し、個別記事だけを個別記事に飛ばしてアーカイブページは適当にすませましょう。
1.もし個別ページならタイトルをくっつけてメタリフレッシュで飛ばします
<% if:page_name eq 'article' -%> <meta http-equiv="refresh" content="10;URL=http://www.digitalboo.jpn.org/blog/<% extra_title %>/"> <% /if -%>
2. もし何らかのカテゴリーページなら新しいURLのカテゴリー一覧ページへ飛ばします。
<% if:page_name eq 'category' -%> <meta http-equiv="refresh" content="10;URL=http://www.digitalboo.jpn.org/blog/カテゴリー"> <% /if -%>
3. もし日付別アーカイブページなら、面倒なので新しいURLのトップへ飛んでもらいます。
<% if:page_name eq 'archive' -%> <meta http-equiv="refresh" content="10;URL=http://www.digitalboo.jpn.org/blog/"> <% /if -%>
上手くいきました。
なぜこんなことをしなければならないかというと、メタリフレッシュで飛んでくるのは人間のお客さんだけでなく、検索ロボットがご丁寧に全部の生成される可能性があるURLから飛んでくるからです。
人間なら決してアクセスしないような超へんてこりんなURLからばんばん飛んでくるロボットが404エラーに遭遇しまくる事態を避けるため、こうして個別記事以外をまとめて誘導しています。
さて検索エンジンのロボットと言えば、もうひとつやっておかねばならないことがあります。
301 Redirectが使えないということは、「サイトのURLが変更になりました」ということをロボットが理解できないということです。
これを理解させるには、301の代わりをメタタグに書き込むしかありません。その方法はリンクタグを使うことです。
rel=”canonical” というlinkタグがあって、これは正しい唯一のURLを指定するタグらしいです。ブログが生成するURLってのは、末尾にいろんなパラメータが付いたり、同じページなのに違う複数のURLが存在してしまったりします。これらをまとめて「ほんとのページはこれですよ」と指定するタグなんですね。
これが301の代替として使えるのかどうなのか、よくわかりませんが多分使えるのではないでしょうか。
もともとはドメイン内だけで作用するタグでしたが、今ではドメインをまたがってもいいそうです。そこで、さきほどの「もし個別ページなら」の中に書き入れます。
<% if:page_name eq 'article' -%><link rel="canonical" href="http://www.digitalboo.jpn.org/blog/<% extra_title %>"> <meta http-equiv="refresh" content="10;URL=http://www.digitalboo.jpn.org/blog/<% extra_title %>/"><% /if -%>
これで、個別記事を正しく誘導できると思います。
アーカイブページにはcanonicalを指定しません。そんなの意味ありません。
ここまでくるともう一つだけ大事なことがありまして、それは旧ホームページから新ホームページへのジャンプです。
Seesaaのタグ「if」の中で「もしホームページなら」というのがありません(というか知りません)
調子に乗って<if>を設定した結果、肝心のホームからのジャンプが出来なくなってしまったんですねえ。これはいかん。何とかしましょう。
「もしホームなら」が使えないとすれば、クリックを促して手動ジャンプにするのがいいのでしょうか。いやです。
「もしホームなら」は、タグに頼らなくてもできます。さくらのブログの編集画面「デザイン」から「コンテンツ」を選択して、コンテンツのカスタマイズで対処します。
編集モードを「エキスパート」にすると、どのページでどのコンテンツを表示するか選べるので、トップページにだけ「旧ホーム→新ホーム」へジャンプするためのコンテンツを用意します。これがまさしく「もしホームなら」です。
さくらのブログには、驚くべき機能がありました。本来headerに書くべきメタ要素を、コンテンツ内に書いてもちゃんと動作するのです。
そこで、「旧ホーム→新ホーム」へのメタジャンプとrelを、コンテンツに書いてトップにだけ表示します。
<p>このサイトは次の URL に移転しました。10秒後に新 URL に転送します<br /> <a href="http://www.digitalboo.jpn.org/blog/">http://www.digitalboo.jpn.org/blog/</a> <link rel="canonical" href="http://www.digitalboo.jpn.org/blog/"> <meta http-equiv="refresh" content="10;URL=http://www.digitalboo.jpn.org/blog/"> </p>
囲みやシャドウのcssを一緒くたに書き込んでいますので、こんな風に表示されます。
これをホームにだけ表示し、他のページには次のようにrelやmetaのないコンテンツを表示させます。
<p>このサイトは次の URL に移転しました。10秒後に新 URL に転送します<br /><a href="http://www.digitalboo.jpn.org/blog/">http://www.digitalboo.jpn.org/blog/</a> </p>
見た目は全く同じですが、ホームのみ新ホームへ飛びまして、その他のページはその他のページなりに header の if に基づいて飛んでいきます。
どうでしょう。ど素人の苦肉の策です。
こんなやりかたは正しいんでしょうか。どうなのでしょうか。全然わかりませんが一応書いておきました。
さくらのブログからwordpressその3(この投稿)
はじめまして。突然のコメントすみません。
ワードプレスへの移転方法を模索していて辿り着きました。
非常に参考になり感謝です。
早速同じやり方で移転を初めています。
1つ気になっているのは確かにこの方法ならリダイレクトでき、
移転先のページへ飛ぶ事ができますが、
「リダイレクト検証ツール」で検証してみると404エラーになります。
何故なのかがよく分かりません。
別に検証ツールの結果はどうでもいいのですが、
ページの評価や検索順位が引き継がれれば問題ないと思います。
ただ、リダイレクト設定の前にこの事に気が付いたので、
実際にはどうなっているのか気になります。
もしできるのであればサイト移転後の結果等、
大まかに教えて頂けると助かります。
こんなわかりにくい文章で参考になるなんて言っていただいてありがとうございます。
移転先に飛ぶことは出来ても検証ツールでは404になるのですか。
なぜでしょう。不思議ですね。正規のリダイレクトでないからでしょうか。
移転の結果ですが、wordpressによるスラッグの強制補正のため、うまくいかない事例が多発、細かい修正を沢山余儀なくされました。
日本語と英語の混在したタイトル、記号が入っているようなタイトルはどうしてもうまくいきませんでした。
目につき次第個別に対処して、あとはあきらめました。
ページの評価や検索順位などはある程度吹き飛ぶと思います。
正しく301でリダイレクトしても移転すればそうなるものだと認識しています
(先日、別のサイトのURLを移転したら、取りあえず評価も検索結果も一旦吹き飛びました)
新しいURLで続けていけば、いずれ時間が解決してくれるだろうと思ってます
さくらのブログは更新を止めて放置しているので、wordpressで作り直したほうが重複やパクリと思われるのが厭で手立てを講じました。最低限の目的達成ができてまあいいかなと思ってます。
私は本当にド素人なので、難しいことはよくわからないんです。
わざわざ返信ありがとうございました。
確かにスラッグは苦労してますが、リダイレクトを諦めていた私には非常に嬉しい記事でした。
私もド素人レベルでは負けてないと思います(笑)
結果の情報も非常に参考になりました。
感謝感謝!ホントにありがとうございます!