location + error_page + url prefixes

Igor Sysoev is at rambler-co.ru
Fri Jan 30 23:36:09 MSK 2009


On Fri, Jan 30, 2009 at 08:57:26PM +0200, Maxim Yemelyanov wrote:

> ссылки на сайте имеют вид /язык/url. все такие url-ы пробрасываются на mongrel
> пытаюсь создать локализованные сообщения об ошибках: если при запросе
> /ru/bad-url от бекенда приходит не 200-й ответ, то отобразить
> сообщение на русском и т.п.
> 
>   location / {
>       ...
>       if (!-f $request_filename) {
>         proxy_pass http://mongrel;
>         break;
>       }
>   }
> 
>   # нелокализованное сообщение об ошибке
>   error_page   500 502 503 504  /500.html;
>   location = /500.html {
>     root   /path-to-public;
>   }
> 
>   location /ru {
>     error_page   500 502 503 504  /500_ru.html;
>     error_page   404              /404_ru.html;
>   }
>   location /en {
>     error_page   500 502 503 504  /500_en.html;
>     error_page   404              /404_en.html;
>   }
> 
> в результате при запросе к любой странице /ru/good-url возвращается
> локализованное сообщение, даже если запрос идёт на рабочий url.
> наличие только лишь директив error_page в location не должно вызывать ошибку?

      location /ru/ {
          error_page   500 502 503 504  /500_ru.html;
          error_page   404           =  @mongrel_ru;
      }

      location @mongrel_ru {
          proxy_pass http://mongrel;

          proxy_intercept_errors   on;
          proxy_recursive_errors   on;

          error_page   404         /404_ru.html;
          error_page   ...
      }

      location /en/ {
          error_page   500 502 503 504  /500_en.html;
          error_page   404           =  @mongrel_en;
      }

      location @mongrel_en {
          proxy_pass http://mongrel;

          proxy_intercept_errors   on;
          proxy_recursive_errors   on;

          error_page   404         /404_en.html;
          error_page   ...
      }


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list