Poniższy przykładowy by przekierować wszystkie żądania nieprawidłowo prognozujące (definiowane jako mające ?
w żądanym pliku — zakodowany jako %3F
we wniosku) do tych mniej źle wyglądających, niezależnie od URL.
(Należy pamiętać, że, jak słusznie doradzili gdzie indziej, nie powinniście uzyskiwać tych błędnie utworzonych linków w pierwszej kolejności, więc używajcie ich w ostateczności tylko wtedy, gdy nie można poprawić błędnie utworzonych linków, wiesz, że takie wnioski są próbował przez ważnych czynników.)
server {
listen [::]:80;
server_name localhost;
rewrite ^/([^?]*)\?(.*)$ /$1?$2? permanent;
location/{
return 200 "id is $arg_id\n";
}
}
jest to przykład, jak to działa — gdy żądanie niesłusznie patrząc napotkano, próba korekty jest wykonany z odpowiedzią 301 Moved Permanently
z rzekomo poprawne Location
nagłówek odpowiedzi, który sprawi, że przeglądarka automatycznie ponownie prześle żądanie do nowo podanej lokalizacji acji:
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
Zauważ, że żadne próby korekty wykonywane są na właściwych wyglądające wniosków:
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 tylko w przypadku zapomnienia i nie zauważył, The Bounty ustawieniu będzie wygaśnie w ciągu kilka godzin. –