ПРОЕКТЫ 


  АРХИВ 


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]

Перенаправление в случае присутствия ошибки 404


  • To: nginx-ru@xxxxxxxxx
  • Subject: Перенаправление в случае присутствия ошибки 404
  • From: "shortgun" <nginx-forum@xxxxxxxx>
  • Date: Tue, 18 Jan 2011 05:47:19 -0500
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mickey.jlkhosting.com; s=x; h=Date:Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=sugw4+hAypopPUMcFA2SEMMr8QV5NlPFhS62/gsU4CY=; b=UBJrD8uV1B0HLlD7/pFp9fUM8ajKPAoVcaY7PyJGtLONgu8l6GvileKSrWXYe3wMm5KPxqVVPElORgO81YlP5pZFQFt6BbVRBU72lfBf1yexIIGoSGq6a/8+eZHUR3Kw;

Добрый день, не могу разобраться, как
решать следующую задачу.

Есть система в php, Magento. В ней существуют
урлы вида 
http://mysyte.com/somepath/tovar1.html - физически, html
файла нет. внутри продукта происходит
обработка через php и выдача контента по
этой урле. Теперь возникает ситуация,
что контент снят с продаж, и по урле
вида http://mysyte.com/somepath/some_page.html выдается
сообщение от самой магенто - товара нет,
товар не найден, error 404, однако, товар
доступен как архивный по урле
http://mysite.com/tovar1.html

Можно ли при помощи try_files или rewrite
сделать следующее:
if (в ответ получаем 404) 
  заменить /some_path/tovar1.html на /tovar1.html

Делать это надо именно в случае 404.
Физически - файлов вида .*\.html как файлов
для проверки в условии if - на самом деле
нет! там же происходит обработка через
скрипт index.php....

Исходный конфиг
[code]
         location ~ .php$ {
             root            /raid0/www;
             fastcgi_pass   phpfarm;
             fastcgi_index  index.php;
             fastcgi_param  SCRIPT_NAME $fastcgi_script_name;
             fastcgi_param  SCRIPT_FILENAME   
/raid0/www/$fastcgi_script_name;
             include        fastcgi_params;

         }
         location / {
             #rewrite  ^/.*/(.*)\.html$  http://mysite.com/$1.html 
break;
             root            /raid0/www;
             fastcgi_pass   phpfarm;
             fastcgi_param  SCRIPT_NAME index.php;
             fastcgi_param  SCRIPT_FILENAME    /raid0/www/index.php;
             include        fastcgi_params;
             #try_files      $uri  $uri/index.html  @deletedproducts;
         }
         location @deletedproducts {
             rewrite  ^/.*/(.*)\.html$  http://igigidev.com/$1.html 
last;
             root            /raid0/www/igigi.com;
             fastcgi_pass   phpfarm;
             fastcgi_param  SCRIPT_NAME index.php;
             fastcgi_param  SCRIPT_FILENAME   
/raid0/www/igigi.com/index.php;
             include        fastcgi_params;
         }

[/code]

В коде есть закоментированная строчка
с rewrite, при ее открытии абсолютно все
запросы на /some_path/some_page.html
перебрасываются на /some_page.html... а нужно,
чтобы перебрасывались только те,
которые дадут 404
если открыть строчку try_files - то
результат тот же - реврайту
подвергаются все странички.
Абсолютно... (((( как оперировать ответом
404 от php-системы? Ибо она в данном случае
черный ящик!

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,167161,167161#msg-167161


_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.