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
|