রেফারারের উপর ভিত্তি করে বিভিন্ন nginx নিয়ম


12

আমি ডাব্লুপি সুপার ক্যাশে সহ ওয়ার্ডপ্রেস ব্যবহার করছি। আমি গুগল থেকে আগত দর্শনার্থীদের (যে সমস্ত দেশ নির্দিষ্ট রেফারারদের যেমন গুগল.কম , গুগল.কম.ইউক ইত্যাদি) অন্তর্ভুক্ত করে তাদের অনাবৃত সামগ্রী দেখতে চাই

আমার এনজিএনএক্স বিধি রয়েছে যা আমার ইচ্ছা মতো কাজ করছে না:

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

আমি ডাব্লুপি সুপারচাসির সাথে পরিচিত নই, তবে ক্যাশে এড়াতে আপনার যদি কেবল সূচি.এফপি পুনরায় লেখার প্রয়োজন হয় তবে এটি খুব বেশি কঠিন হওয়া উচিত নয়।

আপনার বিদ্যমান ফিল্টারটি ব্যাপক নয় কারণ এটি কেবলমাত্র google.com এবং google.co জন্য পরীক্ষা করে for এই তালিকা অনুসারে , অনেকগুলি টিএলডি রয়েছে যা গুগল ব্যবহার করে যা মেলে না, যেমন গুগল.ডি, গুগল.ফার, ইত্যাদি won't

নিম্নলিখিত ফিল্টারটি আপনাকে এমন রেফারেন্সগুলিতে সীমাবদ্ধ করা উচিত যা www.google থেকে শুরু হয় এবং 2-3 অক্ষরের টিএলডি এর সংমিশ্রণে শেষ হয়।

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

2

আপনি বেশিরভাগ ওখানেই থাকেন.

প্রথমত, ডাব্লুপি সুপার ক্যাশে নিয়মগুলি খুব অগোছালো। তাদের সত্যই গ্রাউন্ড আপ থেকে নতুন করে ডিজাইন করা দরকার, তবে এটি অন্য দিনের জন্য একটি প্রকল্প।

এই কাজটি পেতে, তাত্ক্ষণিকভাবে ফিরে আসবেন না, পরিবর্তে $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
আমি তাও পাই না। কীভাবে ব্রাউজারটিকে অন্য ইউআরএলে পুনর্নির্দেশ করা সার্ভার-সাইড ক্যাচিং এড়ানো যায়?
মাইকেল হ্যাম্পটন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.