WordPressで別のサイトに復旧(テスト・一時)サイトを公開し重複サイトを回避する一案
2014/11/22
VaultPress™を利用して別のドメインに対して、テストサイトや一時サイトを構成すると、
本運用のサイトを大幅に改変したりする際でも一時的にテストサイトへ転送し、
サイトの公開を継続することができるようになります。
しかし、そのままでは全く同じ内容のサイトが2つ公開されている状態になります。
いわゆる重複サイトです。
本番運用のサイトと一時サイト(テストサイト)で、
共通のタグを設定しcanonicalタグを出力する案をご紹介します。
重複サイトの構成
以前以下の投稿でVaultPressを利用して一時サイトの構成手順をご紹介しました。
URL的には、以下のサイトを同一サイトとして公開しています。
このサイトは単純にコンテンツがミラーとして構成されていて、
本運用サイト(rensrv.com)が何らかの事情で正しく表示できなかったり、
サイトの構成を大幅に変更しなければならないような場合用に構成しました。
何らかの事情が発生した際にVaultPressのバックアップから、
1発リストアを実行して、一時サイトにリストアを行ってから、
URLを一時サイト(algorhythnn.minibird.jp)へ転送して回避します。
こういうミラー状態にあるサイトを放置すると重複として何らかの制裁を受ける可能性があります。
robots.txtにて片方だけをクローラアクセスを制限するのも一つの選択肢ですが、
URLの正規化を行うことでも対応が可能です。
ここでは、再度サイトのバックアップを実行した際にも手間をかけず、
本番環境にcanonicalタグの出力を設定しておき、一時サイトのみで正規化する一つの案をご紹介します。
canonicalタグの出力処理の定義
重複サイトを明示的に正規化する手順として、canonicalタグの出力があります。
例えば、以下のようなタグを出力する感じです。
1 |
<link rel="canonical" href="http://rensrv.com/"> |
これは、「http://algorhythnn.minibird.jp/」にアクセスした際に、
正規のURLは「http://rensrv.com/」であることを示しています。
このURL正規化をすべての投稿で行うのがこの案の趣旨です。
URL正規化タグの出力ショートコードの作成
URLの正規化を出力する共通コードをWordPressのショートコードで定義します。
私は、functions.phpに対して以下のようなコードを定義しています。
(実現方法はいろいろあるでしょうから適宜お好みで)
ショートコードの定義等に関しては以下の投稿を参考にされて下さい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
function temp_site_canonical($atts, $content=null) { $a = shortcode_atts( array( 'domain' => '' ), $atts ); $domain ='http://' . $a['domain']; $host = 'http://'.$_SERVER['HTTP_HOST']; $canonical = $domain . $_SERVER['REQUEST_URI']; $tag = '<link rel="canonical" href="' . $canonical .'" />'; if($domain != $host){ return $tag; }else{ return ''; } } add_shortcode('temp_canonical', 'temp_site_canonical'); |
これによって、 [ temp_canonical domain=’rensrv.com’ ]という、
ショートコードが利用できるようになります。
domain=’rensrv.com’ は正規化を行う先の正規のURLドメインです。
条件判定でURLの生成
条件判定によって、rensrv.com以外のドメインでサイトを表示している際にのみ、
<link rel=”canonical” href=”http://rensrv.com/”> というタグが出力される仕組みです。
このショートコードを利用して各個別の投稿においても、
それぞれの投稿URLに対応する、正規化URLを出力しています。
例 (以下は便宜上リンク化しています)
http://algorhythnn.minibird.jp/cheap/minibird/ にアクセスした場合には、
<link rel=”canonical” href=”http://rensrv.com/cheap/minibird/“> が出力されます。
ショートコードの出力をウィジェットで実装
ショートコードにてURL正規化のタグを作成したら、
あとは、ヘッダー(<head>~</head>)部分に対してタグの出力を行うことで、
各URLの正規化を行うことができます。
※<body>~</body>間に出力した際には正規化は一般的に無視されるとされています。
こうしたショートコードをWordPressの<head>タグに出力する方法は、
直接テンプレートを触ってもいいのですが、より簡単な方法としてプラグインを利用します。
私は以下のプラグインを利用しています。
このプラグインをインストールして有効化することで、
WordPressのウィジェットエリアが拡張されheadタグ領域に対して、
任意のコードを出力することができるようになります。
尚、今回ウィジェットエリアに追加しているウィジェットは、
HTML JavaScript Adderプラグインにて追加されるウィジェットを配置しましたが、
ショートコードの実行ができるウィジェットであれば何でも構いません。
HTML JavaScript Adderプラグインについては以下でご紹介しています。
以前、AdSense広告ユニットの追加でご紹介したプラグインです。
タグの出力を確認
ウィジェットに対して今回定義したショートコードを、双方のサイトに設定します。
双方に設定する理由としては本運用のサイト側のバックアップを、
そのまま一時ドメインで表示しても変更することなく動作させるためです。
同じ設定を行ってサイトを表示した例が以下のようになります。
ここではWordPressがデフォルトで出力するcanonicalタグ生成は停止させています。
通常、WordPressでは自身のURLを正規化URLとして出力しています。
本運用のサイト(rensrv.com)を表示した場合
本運用のサイトは自身が正規のURLになりますので、何も出力しません。
http://rensrv.com/cheap/minibird/
一時サイト(algorhythnn.minibird.jp)を表示した場合
一時サイトを表示した際にはアクセスされたページに応じて、
正規のドメイン側のページへURLの正規化タグを出力しています。
http://algorhythnn.minibird.jp/cheap/minibird/
さいごに
このようにして本運用のサイトをバックアップからミラーサイトとして構成し、
不慮の事態に備えてサイトをミラー化して運用をおこなうことができます。
あとはおまけでrobots.txtなどを配置して、
一時サイト側のクローラアクセスをさせないなどの対応をするか、しないかを判断されるといいでしょう。
WordPressはWordPress Foundation の登録商標(第5049965号)です。
WordPressロゴ、アイコンその他のマーク等はWordPress Foundation の商標であり、
WordPress Foundation の著作物です。
WordPress.comはWordPress Foundation が管理運営を行うドメインならびにサービスの名称です。
WordPress.com、WordPress.net、WordPress.org、WordPress.tv、
WordPressFoundation.orgはWordPress Foundationが
管理運営を行なう正式なトップレベルドメインであるとともに、
WordPress Foundationが運営を行うサービスの名称です。
wordpressはFree Software Foundation, Inc.によってGPL2+でライセンスされています。
関連記事
-
JetPack統計情報で指定した記事の日別アクセスを開く方法
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
WordPressの管理画面へのログインを個別に制御する手順
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
Facebook™への共有をJetpack by WordPress.comで行う動作
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
13.Gravatar ホバーカード-Jetpack by WordPress.com
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
WordPressで独自のショートコードをプラグインレスで設定
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
wordpressがエラーとなった場合に最初に確認すべきこと
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
WordPressサイドバーウィジェットにAdSenseユニットを追加
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
ファイルアップロード上限の変更(PHP phpMyAdmin wordpress)
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
Jetpack by WordPress.comはユーザーごとに連携が必要
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
19_07.SlideShareプレゼンテーション表示には、Jetpackのslideshareショートコード埋め込み
Google or AdMax Promotion(it) 禁断の機能がau公式 …