私はWordPress with WP Super Cacheを使用しています。Googleからアクセスした訪問者が欲しいです。 .co.ukなど)ncachedの内容を確認します。
私のnginxルールが私が望むように機能していない:
server {
server_name website.com;
location / {
root /var/www/html/website.com;
index index.php;
if ($http_referer ~* (www.google.com|www.google.co) ) {
rewrite . /index.php break;
}
if (-f $request_filename) {
break;
}
set $supercache_file '';
set $supercache_uri $request_uri;
if ($request_method = POST) {
set $supercache_uri '';
}
if ($query_string) {
set $supercache_uri '';
}
if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) {
set $supercache_uri '';
}
if ($supercache_uri ~ ^(.+)$) {
set $supercache_file /wp-content/cache/supercache/$http_Host/$1index.html;
}
if (-f $document_root$supercache_file) {
rewrite ^(.*)$ $supercache_file break;
}
if (!-e $request_filename) {
rewrite . /index.php last;
}
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/website.com$fastcgi_script_name;
include fastcgi_params;
}
}
目標を達成するにはどうすればよいですか?
私はWP Supercacheに精通していませんが、キャッシュを回避するためにindex.phpに書き直す必要があるだけなら、それほど難しくはないはずです。
既存のフィルターはgoogle.comとgoogle.coのみをチェックするため、包括的ではありません。 このリスト によると、google.de、google.frなど、一致しないGoogleが使用するTLDが多数あります。
次のフィルターは、www.googleで始まり2〜3文字のTLDの任意の組み合わせで終わる参照元に制限する必要があります。
if ($http_referer ~* ^www.google.[a-z]{2,3}(.[a-z]{2})?$ ) {
# do whatever you need to do here to avoid caching
}
あと少しです。
まず、WPスーパーキャッシュルールは非常に乱雑です。 本当に再設計する必要があります ゼロからですが、それは別の日のプロジェクトです。
これを機能させるには、すぐに戻るのではなく、$supercache_uri = ''
他のすべてのチェックと同様に。例えば:
if ($http_referer ~* (www.google.com|www.google.co) ) {
set $supercache_uri '';
}
これは、$supercache_uri
は元々set
であり、最初に持っている場所ではありません。
これは$ http_refererで機能します:
if ($http_referer ~* (www.google.com|www.google.co) ) {
break;
}
if (!-e $request_filename) {
rewrite . /index.php break;
}