रेफरर के आधार पर अलग-अलग नगनेक्स नियम


12

मैं WP सुपर कैश के साथ वर्डप्रेस का उपयोग कर रहा हूं। मैं उन आगंतुकों को चाहता हूं जो Google से आते हैं (जो कि सभी देशों के विशिष्ट संदर्भों जैसे google.co.in, google.co.uk और आदि) को बिना पढ़े सामग्री को देखने के लिए प्रेरित करता है

मेरे 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;
    }
}

मुझे अपना लक्ष्य प्राप्त करने के लिए क्या करना चाहिए?

जवाबों:


3

मैं WP Supercache से परिचित नहीं हूं, लेकिन अगर आपको कैश से बचने के लिए index.php को फिर से लिखना होगा तो यह बहुत मुश्किल नहीं होना चाहिए।

आपका मौजूदा फ़िल्टर व्यापक नहीं है क्योंकि यह केवल google.com और google.co के लिए जाँच करता है। इस सूची के अनुसार , कई TLD हैं जो Google का उपयोग करता है जो कि मेल नहीं खाते, जैसे कि google.de, google.fr, आदि।

निम्नलिखित फ़िल्टर आपको उन संदर्भकर्ताओं तक सीमित करना चाहिए जो 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
}

2

तुम लगभग वहां थे।

सबसे पहले, WP सुपर कैश नियम बहुत गड़बड़ हैं। उन्हें वास्तव में जमीन से ऊपर ले जाने की आवश्यकता है, लेकिन यह एक और दिन के लिए एक परियोजना है।

इस काम को करने के लिए, तुरंत वापस न जाएं, इसके बजाय $supercache_uri = ''अन्य सभी जाँचों को सेट करें। उदाहरण के लिए:

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

यह उस बिंदु को प्रकट करने की आवश्यकता है जहां $supercache_uriमूल रूप से है set, और शुरुआत में नहीं जहां आपके पास है।


0

यह $ http_referer के लिए काम कर सकता है:

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

यह भी काम नहीं करता है

-1

इसे इस्तेमाल करे

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

2
मुझे यह नहीं मिला
पियरे.वीयरेंस

1
मैं यह भी नहीं मिलता है। किसी अन्य URL पर ब्राउज़र को पुनर्निर्देशित करने से सर्वर-साइड कैशिंग से कैसे बचा जाता है?
माइकल हैम्पटन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.