¿Cómo redirigir direcciones URL como mysite.com/? a mysite.com (sin '?') Django o nginx?

Tengo el siguiente problema: estoy usando Django bajo nginx. Desde hace un tiempo comencé a trabajar en SEO. Así que ahora necesito redirigir direcciones URL como

sitio.com/? a sitio.com/

or

site.com/alguna_pagina/? a site.com/some_page/

Entonces, el problema es el '?'... Puedo redirigir si hay algo después del '?' pero si es solo '?' - No se que hacer..

Traté de leer el meta 'REQUEST_URI' pero está vacío y el GET está vacío, pero eso es normal. Tal vez pueda hacer algún truco al respecto en nginx, pero no estoy seguro de que sea lo correcto.

¿Hay algún consejo que pueda ayudar? gracias de antemano.. Y perdón por mi inglés)

UPD:

Intenté en nginx lo siguiente:

    if ($request_uri ~ "[?]$") {
        rewrite ^/(.*)$ http://$host/$1? permanent;
    }

Funciona muy bien en caso de que la url sea como

"sitio.com/algo?"

pero cuando es "site.com/something?city=4&myid=10?" redirige a "sitio.com/algo"

por lo que se pierden todos los parámetros normales ("city, myid"). Y eso no es bueno para mí, porque necesito salvarlos. Todavía necesito ayuda. Parece que tampoco es tan fácil para mí hacerlo con nginx.

preguntado el 22 de mayo de 12 a las 11:05

No podrá salvar el caso donde hay una cadena de consulta y una alternativa... ? al final. ¿Tiene un enlace en algún lugar a "site.com/something?" es comprensible, pero algo como "site.com/something?city=4&myid=10?" es solo un enlace borked, en general. -

2 Respuestas

Yo usaría nginx, no es necesario activar el proceso de python para hacer la redirección, y las redirecciones son muy fáciles en nginx, solo mire las preguntas relacionadas.

contestado el 22 de mayo de 12 a las 12:05

Realmente lo intenté y no pude hacerlo funcionar como lo necesito (ver publicación actualizada) - v100ev

Realmente no entendí tu pregunta. ¿Solo desea redirigir las URL que contienen o terminan en '?'. En caso de que desee redirigir todas las URL, simplemente use:

rewrite ^/(.*)$ http://$host/$1 permanent;

Nota la '?' al final de su objetivo de reescritura, detiene los parámetros GET que se agregan a la solicitud de redirección. Ver http://wiki.nginx.org/HttpRewriteModule#rewrite

contestado el 22 de mayo de 12 a las 15:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.