Различать %2F и / в правилах rewrite
Maxim Dounin
mdounin at mdounin.ru
Mon Mar 9 02:02:25 MSK 2009
Hello!
On Sun, Mar 08, 2009 at 11:58:41AM +0200, Roman Odaisky wrote:
> Добрый день!
>
> Обнаружилось, что правило
>
> rewrite ^/некий/путь/([^/]+)/[^/]+\.([^/.]+)$ /другой/путь/$1.$2;
>
> не срабатывает на URL наподобие
>
> /некий/путь/42/Схема%20стека%20TCP%2FIP.png
>
> потому что %2F и / считаются одним и тем же. Как можно повлиять на это
> поведение?
Это поведение - оно в соответствии с RFC 2616, 3.2.3 URI
Comparison.
Если хочется нестандартного поведения - используйте
if ($request_uri ~ ...) {
set $a1 $1;
set $a2 $2;
rewrite ^ /другой/путь/$a1.$a2;
}
Только потом не говорите что вас не предупреждали.
Maxim Dounin
More information about the nginx-ru
mailing list