Các mẫu sau đây sẽ chuyển hướng tất cả các yêu cầu sai-looking (được xác định là có ?
trong tên tập tin yêu cầu — mã hóa như %3F
trong yêu cầu) vào những người ít sai trai, không phân biệt địa chỉ URL.
(Xin lưu ý rằng, như được thông báo đúng ở nơi khác, bạn không nên nhận các liên kết được tạo sai ở địa điểm đầu tiên, vì vậy, hãy sử dụng nó như một phương sách cuối cùng — chỉ khi bạn không thể sửa các liên kết sai hình thành khác, và bạn biết rằng yêu cầu đó đang cố gắng bởi các đại lý hợp lệ.)
server {
listen [::]:80;
server_name localhost;
rewrite ^/([^?]*)\?(.*)$ /$1?$2? permanent;
location/{
return 200 "id is $arg_id\n";
}
}
Đây là ví dụ về cách nó sẽ làm việc — khi một yêu cầu tìm kiếm sai là gặp phải, nỗ lực sửa được thực hiện với một phản ứng 301 Moved Permanently
với một được cho là đúng Location
tiêu đề phản hồi, điều này sẽ làm cho trình duyệt tự động cấp lại yêu cầu cho loc mới được cung cấp ation:
opti# curl -6v "http://localhost/default/Site%3Fid%3D13"
* About to connect() to localhost port 80 (#0)
* Trying ::1...
* connected
* Connected to localhost (::1) port 80 (#0)
> GET /default/Site%3Fid%3D13 HTTP/1.1
> User-Agent: curl/7.26.0
> Host: localhost
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Server: nginx/1.4.1
< Date: Wed, 15 Jan 2014 17:09:25 GMT
< Content-Type: text/html
< Content-Length: 184
< Location: http://localhost/default/Site?id=13
< Connection: keep-alive
<
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.4.1</center>
</body>
</html>
* Connection #0 to host localhost left intact
* Closing connection #0
Lưu ý rằng không có những nỗ lực sửa chữa được thực hiện trên các yêu cầu hợp lý-looking:
opti# curl -6v "http://localhost/default/Site?id=13"
* About to connect() to localhost port 80 (#0)
* Trying ::1...
* connected
* Connected to localhost (::1) port 80 (#0)
> GET /default/Site?id=13 HTTP/1.1
> User-Agent: curl/7.26.0
> Host: localhost
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx/1.4.1
< Date: Wed, 15 Jan 2014 17:09:30 GMT
< Content-Type: application/octet-stream
< Content-Length: 9
< Connection: keep-alive
<
id is 13
* Connection #0 to host localhost left intact
* Closing connection #0
@ John chỉ trong trường hợp bạn quên và không để ý, bounty bạn thiết lập sẽ hết hạn trong vòng vài giờ. –