У меня есть сайт, на котором есть проблема с раздражающим URL-адресом. По номерам страниц, найденным на странице, если вы подпишетесь на одну, она посетит ?page=2
, это отлично.
Если вы затем перейдете по любым последующим ссылкам, вместо того, чтобы заменять ?page=2
, он добавит новый. Например: ?page=2&page=3
. По разным причинам мне нужно, чтобы это было ?page=3
и убрать с самого начала лишний параметр.
К сожалению, исправить это в коде в настоящее время невозможно, и мне интересно, делал ли кто-нибудь что-то подобное посредством перезаписи NGINX.
Вы не можете исправить это с помощью rewrite
поскольку он работает только с частью URI перед строкой запроса.
Строка запроса содержится в $request_uri
и $args
переменные, которыми можно управлять с помощью регулярных выражений с if
и / или map
директивы.
Для обработки вашего конкретного случая вы можете использовать:
if ($request_uri ~ ^(.*)[?]page=2&page=(.*)$) { return 301 $1?page=$2; }
Для примера использования map
см. этот ответ: Nginx - Перенаправление на основе параметров строки запроса