ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Странное поведение http_rewrite _module


  • To: nginx-ru@xxxxxxxxx
  • Subject: Странное поведение http_rewrite _module
  • From: Alexander Radostin <alex.radostin@xxxxxxxxx>
  • Date: Tue, 19 Jan 2010 03:36:41 +0200
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=49R/LRvbZaExwN9a9rad6PodMOGQnO81n0eZsyhbhMc=; b=hcmoWneRLLwL7dk2e1b+ciklK9gQ+hRo/oSon8SFTUgFwmS5CyO6K2scL4WBg0K0TR qKF9FOr60be7+ey8VnnsPufLdhK5akFKovnrtIHn+IQ1XZWQZ5p85FMuwHaOy3ogTWrz Vtwm3Fc+KO004riK7M+1K6OUyRXvGNngp5yrc=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=WjEv0EsPA5JLEJHrw3l+wDYQIHy7aQ6CH7SuC1lJ7MjDtYtM3VxcDb6Djr+1Q1b/Ro JI1MZCeMc/oiGIFo2/Kw7ZsPJ2JRE7lpbcEOL9uPW3R7p2GvXddqxU05BIjJ5vjFz8pL iS+PY9Av07m9xqxLwaxrh5QAVgpLSJxg/u55Q=

Я уже писал сюда про эту проблему, но дело было перед НГ и формулировка подкачала :) Постараюсь пояснить подробней в чем дело.

Вот правило:
rewrite ^/download/([^/]+)/(.+)/$       /index.php/download/?hash=$1&filename=$2        last;

Запускаем на вход вот такой url (валидный, строки обработаны заранее urlencode):
/download/b7050cd8740a51db29c7bef9a81c74b970cabca3/19%20Thr3shold%20%26%20Detune%20-%20Shapeshifter%20(Epic%20Mix).mp3/

На выходе получаем:
["QUERY_STRING"]=>
string(120) "hash=b7050cd8740a51db29c7bef9a81c74b970cabca3&filename=19%20Thr3shold%20&%20Detune%20-%20Shapeshifter%20(Epic%20Mix).mp3"

То, что было на входе было закодированным амперсантом (%26), на выходе магическим образом опять им стало, только уже без энкода, соотвественно появляется фантомая переменная и имя файла обрезается. Аналогичный результат получаем и когда на входе амперсант незакодирован. Интересно еще то, что пробелы (%20) без всяких проблем оказываются в результирующей строке, чего не скажешь о закодированных символах прямого слеша или апострофа, которые раскодируются в процессе рерайта в оригинальные.

Есть какое то разумное объяснение такому поведению и есть ли способ сохранить оригинальные строки в результирущем url? Заранее благодарен за все ответы.


Саша Радостин
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.