Yönlendirene dayalı farklı nginx kuralları


12

WP Super Cache ile WordPress kullanıyorum. Google'dan gelen ziyaretçilerin (Bu, google.co.in, google.co.uk ve benzeri tüm ülkeye özgü yönlendirmeleri içermez ) önbelleğe alınmamış içeriği görmesini istiyorum .

İstediğim gibi çalışmayan nginx kurallarım var:

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;
    }
}

Hedefime ulaşmak için ne yapmalıyım?

Yanıtlar:


3

WP Supercache hakkında bilgi sahibi değilim, ancak önbelleği önlemek için index.php dosyasına yeniden yazmanız gerekiyorsa çok zor olmamalıdır.

Mevcut filtreniz yalnızca google.com ve google.co'yu kontrol ettiğinden kapsamlı değildir. Bu listeye göre , google.de, google.fr vb. Gibi Google'ın eşleşmediği birçok TLD vardır.

Aşağıdaki filtre, www.google ile başlayan ve 2-3 karakterlik TLD kombinasyonuyla biten yönlendirmelerle sınırlandırmalıdır.

if ($http_referer ~* ^www.google.[a-z]{2,3}(.[a-z]{2})?$ ) {
    # do whatever you need to do here to avoid caching
}

2

Neredeyse bitti.

İlk olarak, WP Süper Önbellek kuralları çok dağınık. Gerçekten sıfırdan yeniden tasarlanmaları gerekiyor, ancak bu başka bir gün için bir proje.

Bunu çalıştırmak için hemen geri dönmeyin, bunun yerine $supercache_uri = ''diğer tüm denetimlerin yaptığı gibi ayarlayın. Örneğin:

if ($http_referer ~* (www.google.com|www.google.co) ) {
    set $supercache_uri '';
}

Bu ihtiyaçlar noktasında SONRA görünmesini $supercache_uriaslen setsende başında değil, ve.


0

bu $ http_referer için işe yarayabilir:

       if ($http_referer ~* (www.google.com|www.google.co) ) {
               break;
       }
       if (!-e $request_filename) {
               rewrite . /index.php break;
       }

Bu da işe yaramaz

-1

Bunu dene

if ($http_referer ~* (www.example.com|example.com.au) ) {
           return 301 http://your-url.example/custom-path;
}

2
Ben alamadım
Pierre.Vriens

1
Ben de anlamıyorum. Tarayıcıyı başka bir URL'ye yönlendirmek sunucu tarafı önbelleğe almayı nasıl önler?
Michael Hampton
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.