【CFiltering】このサーバでは CFiltering は正しく動作しません。

動作テストではいくつかの設定で実際にアクセス履歴を取得する動作のテストを行います。

用意された全ての設定で上手く行かなかった場合、以下のように

「このサーバでは CFiltering は正しく動作しません。」

と表示されます。

cfiltering11

ここでは対処方法を説明します。

まずやること

まずはCFilteringが更新されていないか確認てください。

もし新しいバージョンがあった場合、バージョンアップを行った後再び動作テストを行って下さい。

動作テストは以下の手順で行うことができます。

  1. 管理画面にアクセス
  2. 左メニューからCFilteringを選択
  3. 「テストボタンを表示するかどうか」の設定をtrueにして保存
  4. 上部に動作テストボタンを押下

それでも解決しない場合は下のいくつかの解決方法を試して下さい。

WordPress Popular Postsを使用している場合

WordPress Popular Postsは記事へのアクセス時にAjaxで閲覧履歴を送信していますが、そのアクセスを利用してCFilteringを動作させることが可能です。

この方法の場合Ajaxによる送信の回数が減るため、パフォーマンスの改善が期待できます。

解決方法

左メニューのCFilteringのダッシュボードに移動し、「WordPress Popular Postsのアクセスを活用するかどうか」の設定にtrueと入れて保存します。

条件

WordPress Popular Postsには負荷対策のための設定であるData Samplingが「Disabled」になっている必要があります。

「Enabled」の場合、効率が落ちる可能性があります。

リバースプロキシしている場合

CloudFrontなどを利用してhttpsにしている場合や、負荷分散のためにロードバランサーを導入している場合などで、ホームページのプロトコルとアプリケーションサーバへの通信のプロトコルが異なる場合、上手く動かない場合があります。

解決方法

左メニューのCFilteringのダッシュボードに移動し、「url scheme」の設定を確認します。

値が入力されている場合は空にして保存します。

何も入力されていない場合は、自身のホームページのプロトコルに合わせて入力して保存します。

例えばhttpsから始まる場合は「https」を入力します。

ページキャッシュを使用している場合

いくつかの設定は生成するJavaScriptのソースに影響します。

ページキャッシュを使用している場合はこのJavaScriptのソースもキャッシュされるため、変更した設定と動作が合わずにエラーになる場合があります。

解決方法

ページキャッシュを削除して下さい。

.htaccessのmod_rewriteが使用できない かつ
WordPressのディレクトリ構造を変えている場合

「Ajaxアクセス時にmod_rewriteを使用したアクセスにするかどうか」の設定がtrueの場合、実際には存在しないURLにアクセスしますが、mod_rewiteの機能によってWordPressのindex.phpで処理されます。

サーバーの設定によってはmod_rewiteが使用できない場合があります。

また、「Ajaxアクセス時にmod_rewriteを使用したアクセスにするかどうか」がfalseの場合、CFilteringプラグインディレクトリ直下のajax.phpにアクセスしますが、このajax.phpはWordPressのwp-load.phpの場所がわかっている必要があります。

通常のインストールであれば問題ありませんが、プラグインディレクトリの場所を変えていたり、WordPressのwp-load.phpの場所を変更している場合、エラーになります。

解決方法

下のどちらかを行って下さい。

サーバーの設定を変更

CFiltering直下の.htaccessの設定の上書きを許可して下さい。

詳しくはAllowOverrideで検索して下さい。

WordPressのwp-load.phpを読み込めるようにする

ajax.phpはajax.phpから3つ上のディレクトリのwp-load.phpを読み込んでいます。

通常のWordPressのディレクトリ構造に直すか、ajax.phpのrequire_onceの記述を修正して下さい。

ajax.phpを修正した場合、アップデートごとに修正し直す必要があります。

もしくはajax.phpから3つ上のディレクトリにダミーのwp-load.phpを配置し、その中からWordPressのwp-load.phpを呼び出すという手段をとることもできます。

この場合はプラグインのアップデートごとに修正し直す必要はありません。

cURLやfsockopenが使用できない場合

動作テストはWordPressのwp_remote_postを使用して実際にAjaxをフロントに飛ばしてチェックしています。

wp_remote_postは内部的にcURLやfsockopenを使用しています。

サーバーによってはどちらも使用できない場合があり、その場合は動作テストは全てエラーになります。

しかしCFilteringの実際の機能ではwp_remote_postを使用していないため、上記理由で「このサーバでは CFiltering は正しく動作しません。」が表示されている場合、実際には動作している場合があります。

確認方法

ブラウザのデバッグ機能を使用したりしてCFilteringが発行するAjaxアクセスが正常に行われていることを確認します。

例えばChromeの場合、F12を押すとデバッグ機能が使えるようになります。

Networkタブを開き、XHRをクリックします。

リロードするとAjaxによる通信を行っているファイルが表示されます。

cfiltering12

一つずつ見ていき、Form Dataに「cf_api_nonce」または「cf_api_access」が設定された「action」があるものを見つけます。

cfiltering13

Headersの隣の×を押して詳細を閉じてStatusを確認します。

ここが200であれば問題ありません。

cfiltering14

その他

バージョン1.4.2からは動作テストのエラーをログに保存しています。

「Tested at:」から始まるものがテストの条件や結果です。

それぞれのテストの一番下に結果を記録しています。

それらをもとに解決することも可能かもしれません。

更なるサポートを必要とする場合はお問い合わせにテストのログを貼り付けて送信して下さい。

時間があるときに対応致します。

なおバージョンアップするとログファイルは消えてしまうので注意して下さい。

スポンサーリンク

シェアする

フォローする