2012-04-24 5 views
5

ハッシュバングURLを使用したajaxベースのWebアプリケーションを開発しました。ロケーションの正規表現を使用して検索エンジンからのリクエストをnginx経由でリダイレクト/処理するには

検索エンジンからHTMLスナップショットを生成し、応答を送信する別のサーバーに要求をリダイレクトしようとしています。私は以下のように位置指示を使ってnginxでこれを達成しようとしています。

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

しかし、私はこの作業をすることができません。誰かが私が使用している正規表現を修正する(または)これを達成するための代替ソリューションを提供することができます。

ありがとうございます。

答えて

5

あなたは場所名(nginx docs)で引数をチェックすることはできません。

なお、全ての種類のテスト引数なしのリクエスト行の唯一のURI部分の場所。 = 1
/index.php?page=1 &ユーザー=ジョン

/index.php?user=john &ページを:クエリ文字列内の引数には、例えば、いくつかの方法で指定することができるので、これが行われますサーバセクションで

あなたは可能性がセットアップ書き換えルールは、(hereを見つけた):

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

とあなたのHTML生成サーバにリダイレクトすることができます「/クローラー」の場所を定義します。

1

私は、この問題をこのように解決:

if ($arg__escaped_fragment_) { 
    return 301 $uri$arg__escaped_fragment_; 
} 
関連する問題