Закрытие оконечного слэша
Igor Sysoev
is at rambler-co.ru
Thu Nov 23 12:38:34 MSK 2006
On Wed, 22 Nov 2006, Alexandr Mikhal'kov wrote:
> Привет.
>
> Есть конфигурация (тут всё заведомо упрощено до необходимого минимума):
>
> server {
> listen 80;
> server_name buahaha.lo;
> root /www/buahaha.lo/htdocs;
>
> error_page 404 /errors/404.htm;
> error_page 403 /errors/403.htm;
>
> location /errors/ {
> internal;
> }
>
> if ($request_uri !~ \.){
> if ($uri = $request_uri){ rewrite
> ^/(.+[^/])$ http://$host/$1/ permanent;
> }
> }
> }
>
> В штатном режиме всё работает нормально, при возникновении 404 или 403
> ошибки игнорируются директивы error_page и выводится сообщение об
> ошибке сгенерированное nginx.
>
> Замена location /errors/ на
>
> location /errors/ {
> internal;
> break;
> }
>
> вызывает редирект на /errors/404.htm/ (добавляется последний слэш)
>
> Это кривые руки или досадный баг?
Я не знаю, как привёднная упрощённая конфигурация работает,
но у меня на вложенный "if" она выдаёт "directive "if" in ...
is not allowed here", что верно.
Что касается оброботки, например, /errors/404.htm, то нужно учитывать,
что до того, как она попадёт в "location /errors/", она пройдёт через
серверный if/rewrite. Поэтому if/rewrite'ы имеет смысл выносить
внутрь location'ов.
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list