Назад | Перейти на главную страницу

Nginx удаляет повторяющийся параметр в URL

У меня есть сайт, на котором есть проблема с раздражающим 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 - Перенаправление на основе параметров строки запроса