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;
}