nginx:重写 URL,但将原始 URL 存储在 access.log 中作为 200

nginx:重写 URL,但将原始 URL 存储在 access.log 中作为 200

我正在设置一个链接跟踪系统,它(暂时)涉及在 URL 前面添加 /link/id/(例如http://服务器/数据/id/出版物/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 的兼容性),希望记录 200 而不是 302。(nginx 允许使用永久选项获取 301 代码,但这也不合适)

location { }我有什么选择?和的组合能rewrite起到作用吗?


更新:AWstats 可以通过设置来理解各种状态代码ValidHTTPCodes="200 304 301",请参阅问题;我的问题解决了,但是问题仍然存在 - 有没有办法让重写在没有 301/302 代码的情况下工作?

答案1

Nginx 正在执行客户端重定向,因为重定向目标的 URL 中包含 http:// - 你可以执行服务器端重定向(nginx 将重新读取新的 URL 并直接发送文件,代码为 200),只需rewrite data/id/(.*) /$1;

相关内容