Recentemente eu mudei o meu site que foi usado PHP / Apache para Django / Nginx. Eu gostaria de dar uma resposta http 301 e redirecionar para a minha página principal todos os pedidos que contenham ".php" no url.
Exemplo:
site.com/ ? page = show.php & id = 2748
site.com/ index.php? page = show_page.php & id = 2748
O ".php" pode estar em qualquer posição no URL.
Eu tentei:
localização ~ .php {
reescreva ^ / (. *) link permanente;
}
Mas, claro, isso só funciona quando temos .php no final. Alguém pode me dar uma pista?
ATUALIZADO:
Se eu usar essa solução:
if ($request_uri ~* "php") {
rewrite ^/(.*) http://www.site.com permanent;
}
Eu recebo o seguinte erro no log:
[29/Aug/2011:13:30:25 -0300] "GET /?page=show_page.php&id=2748 HTTP/1.0" 301 184 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0"
[29/Aug/2011:13:30:26 -0300] "GET /?page=show_page.php&id=2748 HTTP/1.0" 301 184 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0"
[29/Aug/2011:13:30:26 -0300] "GET /?page=show_page.php&id=2748 HTTP/1.0" 301 184 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0"
[29/Aug/2011:13:30:27 -0300] "GET /?page=show_page.php&id=2748 HTTP/1.0" 301 184 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0"
[29/Aug/2011:13:30:27 -0300] "GET /?page=show_page.php&id=2748 HTTP/1.0" 301 184 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0"
[29/Aug/2011:13:30:28 -0300] "GET /?page=show_page.php&id=2748 HTTP/1.0" 301 184 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0"
[29/Aug/2011:13:30:28 -0300] "GET /?page=show_page.php&id=2748 HTTP/1.0" 301 184 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0"
Por que ele tenta redirecionar muitas vezes?
ATUALIZADO:
Eu tentei:
if ($ request_uri ~. .php. ) {
reescreva ^ / link permanente;
}
está funcionando, mas quando o URL começa com "?" Eu recebo o mesmo erro. Então, 50% do problema foi resolvido ...
SOLUÇÃO:
if ($ request_uri ~. .php. ) {
#retorno 410;
reescrever ^ http: // $ host? permanente;