Перенаправление в случае присутствия ошибки 404
shortgun
nginx-forum на nginx.us
Вт Янв 18 13:47:19 MSK 2011
Добрый день, не могу разобраться, как
решать следующую задачу.
Есть система в 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