Quy tắc nginx khác nhau dựa trên người giới thiệu


12

Tôi đang sử dụng WordPress với WP Super Cache. Tôi muốn khách truy cập đến từ Google (Đó inlcudes tất cả dẫn đến nhiều quốc gia cụ thể như google.co.in, google.co.uk và vv) để xem uncached nội dung.

Có những quy tắc nginx của tôi không hoạt động theo cách tôi muốn:

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

Tôi nên làm gì để đạt được mục tiêu của mình?

Câu trả lời:


3

Tôi không quen thuộc với WP Supercache, nhưng nếu bạn chỉ cần viết lại vào index.php để tránh bộ đệm thì điều đó không quá khó khăn.

Bộ lọc hiện tại của bạn không toàn diện vì nó chỉ kiểm tra google.com và google.co. Theo danh sách này , có nhiều TLD mà Google sử dụng không phù hợp, chẳng hạn như google.de, google.fr, v.v.

Bộ lọc sau sẽ giới hạn bạn với những người giới thiệu bắt đầu bằng www.google và kết thúc bằng bất kỳ sự kết hợp nào của TLD 2-3 ký tự.

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

2

Bạn đã gần tới.

Đầu tiên, các quy tắc WP Super Cache rất lộn xộn. Chúng thực sự cần được thiết kế lại từ đầu, nhưng đó là một dự án cho một ngày khác.

Để làm việc này, đừng quay lại ngay lập tức, thay vào đó hãy đặt $supercache_uri = ''như tất cả các kiểm tra khác làm. Ví dụ:

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

Điều này cần phải xuất hiện SAU điểm $supercache_uriban đầu set, và không phải lúc bắt đầu nơi bạn có nó.


0

điều này có thể hoạt động với $ http_Vferer:

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

điều này cũng không hoạt động

-1

Thử đi

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

2
Tôi không hiểu điều đó
Pierre.Vriens

1
Tôi cũng không hiểu. Làm thế nào để chuyển hướng trình duyệt đến một URL khác tránh bộ nhớ đệm phía máy chủ?
Michael Hampton
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.