Il seguente esempio sarebbe reindirizzare tutte le richieste erroneamente-looking (definiti come avendo ?
nel nome del file richiesto — codificati come %3F
nella richiesta) in quelli meno torto-looking, indipendentemente dal URL.
(Si prega di notare che, come giustamente consigliato altrove, non si dovrebbe essere sempre tali link erroneamente formate in primo luogo, quindi, utilizzarlo come ultima risorsa — solo quando non è possibile correggere i collegamenti unico dato in caso contrario, e tu sai che tali richieste siano tentati da agenti validi.)
server {
listen [::]:80;
server_name localhost;
rewrite ^/([^?]*)\?(.*)$ /$1?$2? permanent;
location/{
return 200 "id is $arg_id\n";
}
}
Questo è esempio di come avrebbe funzionato — quando si incontra una richiesta a torto alla ricerca, un tentativo di correzione viene eseguita con una risposta 301 Moved Permanently
con un presunto corretta Location
intestazione di risposta, che farebbe reindirizzare automaticamente la richiesta al sito appena fornito zione:
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
Si noti che nessun tentativo di correzione sono effettuati sulla corretta dall'aspetto richieste:
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 nel caso in cui si è dimenticato e non hai notato, la generosità si imposta sta per scadere entro poche ore. –