2008年5月23日の投稿

2008-05-23
晴れ

Ktai Style と WP Super Cache を併用する

ゆりこ による 01:53:09 の投稿
カテゴリー: WordPressハック
タグ: , ,

以前、Ktai Style と WP-Cache の併用方法を紹介しましたが、WP Super Cache への対応も可能となりましたので、紹介いたします。

[追記: 2009-02-22] Ktai Style 1.70 から、WP Super Cache 0.6.8 以降を利用していれば .htaccess が自動で書き換わるようになりました。以下の手順は不要です。詳しくは Ktai Style の附属ドキュメント「WP-Cache および WP Suer Cache と併用する場合」を参照してください。

[追記: 2009-12-31] Ktai Style 1.81 から、WP Super Cache 配下の plugins ディレクトリーに入れる patch-supercache-ktaistyle.php ファイルを提供するようにしました。今後は WP Super Cache に同梱してもらう予定です。以下の手順は確認方法のみが有効なので、それ以外は del で消しました。

基本的には、WP Super Cache が生成する .htaccess で携帯電話のユーザーエージェントを除外させ、変数 $super_cache_enabled を false にすれば OK です。原理としては WP-Cache と同じなのですが、.htaccess にユーザーエージェントを書いてしまっているので、将来、対応する端末が増えたときは、ユーザーが手動で .htaccess を更新する必要があるのが注意点です。WP-Cache の方はメンテナンス不要なのですが……。

ダウンロード: patch-wpcache.php
最新の Ktai Style に同梱されていますので、それをご利用ください。

今回、wpcache.php を patch-wpcache.php に名称変更し、CVS からダウンロードしてもらうことにしました。設置方法は WP-Cache とほぼ同様です。

  1. wp-cache-config-sample.php を複製して wp-cache-config.php を作り、46 行目 ($cache_rejected_user_agent を定義した直後) に以下のコードを書く。
    
    if (file_exists(ABSPATH. 'wp-content/plugins/ktai_style/patch-wpcache.php')) {
            include ABSPATH. 'wp-content/plugins/ktai_style/patch-wpcache.php';
    }
  2. wp-cache-config.php を wp-config/ 直下に置き、WP Super Cache を有効にする。
  3. WP Super Cache で .htaccess の書き換えを行い、さらに手動で以下のコードを2か所ある RewriteRule の直前に挿入します。
    
    RewriteCond %{HTTP_USER_AGENT} !^(DoCoMo/|J-PHONE/|J-EMULATOR/|Vodafone/|MOT(EMULATOR)?-|SoftBank/|[VS]emulator/|KDDI-|UP\.Browser/|emobile/|Nokia)
    RewriteCond %{HTTP_USER_AGENT} !(DDIPOCKET;|WILLCOM;|Opera\ Mini|Windows\ CE;|PlayStation\ Portable;|Nitro)
    

    →※追記する内容は、Ktai Style 附属ドキュメント README.ja.html を参照してください。

  4. ログアウト状態、かつ、クッキーを削除した状態の PC で閲覧して、リロードしたとき、XHTML ソースの末尾に “super cache” の表示があることを確認する (WP Super Cache の動作確認)
  5. 携帯電話で同じページを閲覧して、携帯向け表示になっていることを確認する。PC 表示だったり文字化けしていたら失敗です。
  6. 再度 PC で同じページを見て、携帯向け表示になってないことを確認する (携帯ページがキャッシュされてないかの確認)。

携帯向け表示の確認は、Firefox で UserAgentSwitcher を使ってしまうと、ブラウザーのキャッシュに携帯向けページが残ってしまい、再度 PC で見たときの確認がうまくいきません。電話の実機で行うことをおすすめします。もしくは、PC 向け表示の確認には別のブラウザーを使ってみてください。

.htaccess で携帯電話のユーザーエージェントを検出すればいいことは分かっていたのですが、Super Cache の確認環境がうまく動作せず、確認していませんでした。今回、対応にチャレンジされた方がおられたため、重い腰を上げて環境を整え、対応させることにしました。ポイントとしては、.htaccess ではスペースをバックスラッシュでエスケープする必要があることでしょうか。これに気がつかないと HTTP 500 エラーになります。