mod_rewrite friendly get nginx rewrite

get - friendly - Eliminar parámetros dentro de la reescritura de nginx



nginx rewrite url (3)

Intente configurar la variable $args para que se vacíe dentro de la ubicación.

set $args '''';

Estoy reescribiendo las URL en nginx después de un relanzamiento. En el antiguo sitio tenía parámetros de consulta en la URL para filtrar cosas, por ejemplo

http://www.example.com/mypage.php?type=4

La nueva página no tiene este tipo de parámetros. Quiero eliminarlos y volver a escribir las URL en la página principal, para que obtenga:

http://www.example.com/mypage/

Mi regla de reescritura en nginx es:

location ^~ /mypage.php { rewrite ^/mypage.php$ http://www.example.com/mypage permanent; }

Pero con esta regla el parámetro todavía se adjunta. Pensé que el $ impediría que nginx procesara más valores ... ¿alguna idea? Todas las demás preguntas tratan sobre cómo agregar parámetros. Solo quiero eliminar la mía :)


Para eliminar un parámetro de una URL, en este caso coupon=xxx :

if ($query_string ~ "^(.*)coupon=(.*)$") { rewrite ^(.*)$ $uri? permanent; }

Tenga en cuenta que esto eliminará todos los parámetros si la declaración coincide. $uri es la solicitud original sin parámetros.


Tuvo un problema similar, después de mucha búsqueda, la respuesta se presentó en los documentos de reescritura .

Si especifica un? al final de una reescritura, Nginx eliminará los $ args originales (argumentos)

Así que para tu ejemplo, esto haría el truco:

location ^~ /mypage.php { rewrite ^/mypage.php$ http://www.example.com/mypage? permanent; }