Я пытаюсь создать правило перезаписи в Nginx, чтобы удалить вопросительный знак вопроса (?
) из URL, но я не могу понять его правильно. Я сделал это для следующих слешей:
#redirect all trailing slash URL's to the respective non trailing slash
rewrite ^/(.*)/$ /$1 permanent;
поэтому я подумал, что то же самое сработает, если заменить косую черту знаком вопроса:
rewrite ^/(.*)?$ /$1 permanent;
но это не сработало, но мне пришло в голову, что вопросительный знак имеет какое-то значение в регулярном выражении, поэтому я попытался избежать его:
rewrite ^/(.*)\?$ /$1 permanent;
но это тоже не сработало, я попытался также удалить первую косую черту:
rewrite ^(.*)\?$ $1 permanent;
но это тоже был перебор, и да, я перезагружал сервер между тестами.
Вот что я пытаюсь сделать:
www.mysite.com?
следует перенаправить на wwww.mysite.com
www.mysite.com/some/path?
следует перенаправить на wwww.mysite.com/some/path
www.mysite.com?some=vars
должно остаться без изменений.
www.mysite.com/some/path?some=vars
должен остаться без изменений.
так что в основном удаляется вопросительный знак только при отсутствии строки запроса.
Как я могу это сделать?
Я проверил другие ответы, но они, кажется, хотят полностью удалить строку запроса, я хочу удалить только в том случае, если есть только вопросительный знак и нет параметров.