2012-04-24 14 views
5

kullanarak nginx aracılığıyla arama motorlarından/sap isteklerini yönlendirmek yoktur. nasıl karma patlama adresler ile bir ajax tabanlı web uygulaması geliştirdik konum regex

HTML anlık görüntüler oluşturur ve yanıt göndermek başka bir sunucuya arama motorlarından isteklerini yönlendirmek için çalışıyorum. Aşağıda belirtildiği gibi konum yönergesi ile nginx içinde bunu başarmak için çalışıyorum:

 location ~ ^(/?_escaped_fragment_=).*$ { 
     proxy_set_header  Host $host; 
      proxy_set_header  X-Real-IP $remote_addr; 
     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header  X-Forwarded-Proto $scheme; 

      client_max_body_size 10m; 
      client_body_buffer_size 128k; 
      proxy_connect_timeout 60s; 
      proxy_send_timeout  90s; 
      proxy_read_timeout  90s; 
      proxy_buffering   off; 
      proxy_temp_file_write_size 64k; 
      proxy_pass  http://x1.x2.x3.x4:8080; 
      proxy_redirect  off; 
     } 

Ama bu çalışma alabilirsiniz değilim. Birisi kullanarak (veya) am regex düzeltmek Can bana bunu başarmak için alternatif bir çözüm sağlar.

Şimdiden teşekkürler.

cevap

5

Yer adını (nginx docs) içinde bağımsız değişkenler için kontrol edemez:

Not olduğunu her türlü testi kanıtlar olmaksızın istek hattı sadece URI parçası yerleri. Sorgu dizesinde argümanlar çeşitli şekillerde verilebilir, çünkü bu, örneğin yapılır:

/index.php?user=john & sayfa = 1
/index.php?page=1 & user = john

if ($args ~ “_escaped_fragment_=(.+)”) { 
    set $real_url $1; 
    rewrite^/crawler$real_url; 
} 

ve HTML üreten sunucuya yönlendirilebilir bir "/ paletli" konumunu tanımlamak:

Sen kurulum sunucu bölümünde bir yeniden yazma kuralı (here bulundu) olabilir.

if ($arg__escaped_fragment_) { 
    return 301 $uri$arg__escaped_fragment_; 
} 
:
1

bu şekilde bu sorunu çözdü