nginx переписывают, добавляют параметр в конце URL

Можно дать, ионизируют попытку. Это не сделает его быстрее, но это могло бы сделать это менее разрушительным.

13
задан 16 September 2011 в 00:39
3 ответа
  1. В перепишите , который вы сопоставляете с путем URL только часть. Это означает, что $ 1 не будет содержать строку запроса.
  2. По умолчанию Nginx добавляет исходную строку запроса к замене перезаписи.

Таким образом, запись должна быть безопасной

rewrite ^(.*)$ $1?locale=de-de break;

В случае вы не хотите, чтобы Nginx добавлял исходную строку запроса, просто укажите ? в конце заменяющего URL:

rewrite ^(.*)$ $1?locale=de-de? break;
15
ответ дан 2 December 2019 в 21:24

The match for rewrite doesn't include the query params, so you need to test for that elsewhere.

Try:

if ($args !~* locale=de\-de){
    rewrite ^(.*)$ $1&locale=de-de last;
}
3
ответ дан 2 December 2019 в 21:24

перезапись не изменяет параметры запроса, а только часть пути URI. По моему опыту, возня с перезаписью приводит к странным циклам, когда новый параметр добавляется до бесконечности. Перезапись, вероятно, не способ сделать это в Nginx.

Вместо этого вам следует изменить переменную $ args с помощью директивы set :

set $args $args&locale=de-de;
3
ответ дан 2 December 2019 в 21:24

Теги

Похожие вопросы