Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
$request_uri?
есть вопрос по документации:
http://sysoev.ru/nginx/docs/http/ngx_http_rewrite_module.html
=========================================================================
Если в строке замены указаны аргументы, то предыдущие аргументы запроса
добавляются после них. Можно отказаться от этого добавления,
указав в конце строки замены знак вопроса:
rewrite ^/users/(.*)$ /show?user=$1? last;
=========================================================================
это несколько не очевидно, что проверка строки замены на наличие
аргументов запроса делается после подстановки значений $переменных
предложение:
1. делать неявное добавление аргументов запроса только в том случае,
если *в конфиге* nginx явно встречается символ '?', тогда при редиректах
на http://www.example.com$request_uri не нужно будет явно указывать
? чтобы подавить не нужное в данном случае удваивание аргументов.
2. другой вариант - вообще убрать неявное добавление $is_args$args,
что имхо существенно противоречит идеологии работы nginx (?)
и тогда, при желании - администратор добавит $is_args$args
там где это ему действительно будет нужно при редиректах.
например, вот такой фрагмент конфига из этого списка рассылки:
rewrite /eng(.*) /eng.php?host=$host&request_uri=$request_uri break;
насколько я понимаю, продублирует аргументы запроса, и нужно будет делать
- rewrite /eng(.*) /eng.php?host=$host&request_uri=$request_uri break;
+ rewrite /eng(.*) /eng.php?host=$host&request_uri=$request_uri? break;
чтобы вручную подавить дублирование аргументов.
т.е. тех случаев, когда автоматическое добавление аргументов запроса
необходимо - наверное меньше, чем тех случаев когда оно не нужно,
и его приходится принудительно подавлять через '?' в конце строки.
=============================================================================
On Wednesday, January 21, 2009 at 14:29:32, Maxim Dounin wrote:
>> rewrite ^ http://www.pspcrazy.com$request_uri permnent;
MD> - rewrite ^ http://www.pspcrazy.com$request_uri permnent;
MD> + rewrite ^ http://www.pspcrazy.com$request_uri? permanent;
MD> (added '?' to avoid query string duplication, typo fixed)
=============================================================================
On Tuesday, September 30, 2008 at 23:02:24, Maxim Dounin wrote:
MD> - rewrite ^ https://www.example.com$request_uri permanent;
MD> + rewrite ^ https://www.example.com$request_uri? permanent;
MD> Since $request_uri already includes query string, it's important
MD> to add '?' to prevent duplication of query string.
=============================================================================
On Monday, September 15, 2008 at 12:21:46, Maxim Dounin wrote:
>>> >> rewrite ^ http://www.$host$request_uri permanent;
MD> - rewrite ^ http://www.$host$request_uri permanent;
MD> + rewrite ^ http://www.$host$request_uri? permanent;
>>> а тут не нужно добавлять $is_args$args ?
>>Нет, $request_uri - это оригинальня строка запроса клиента со всеми
>>аргументами.
MD> Угу, именно поэтому.
=============================================================================
--
Best regards,
Gena
|