web-dev-qa-db-ja.com

nginx:URLを書き換えますが、元のURLはaccess.logに200として保存されます

リンク追跡システムを設定しています。これには、(一時的に)URLの前に/ link/id /を追加する必要があります( http:// server/data/id/publication/id / など)。

rewrite data/id/(.*) http://server/$1;

リクエストは次のようにログに記録されます。

ip - - [17/Nov/2011:10:07:19 +0300] "GET /data/id/publication/id.html HTTP/1.1" 302 154 "-" "UA"`

何らかの理由で(AWStatsとの互換性を維持するため)、302ではなく200をログに記録する必要があります。(nginxでは永続的なオプションを使用して301コードをすぐに取得できますが、それも不適切です)

ここでの私のオプションは何ですか? location { }rewriteの組み合わせでうまくいきますか?


更新:AWstatsは、ValidHTTPCodes="200 304 301"を設定することで、さまざまなステータスコードを理解できます。 this の質問を参照してください。私の問題は解決しましたが、質問はまだアクティブです-301/302コードなしで書き換えを機能させる方法はありますか?

2
kagali-san

リダイレクトターゲットのURLにhttp://が含まれているため、Nginxはクライアント側のリダイレクトを実行しています-rewrite data/id/(.*) /$1;

4
Shish