nginx->fast-cgi->php->bitrix -- как вернуть 404 из php , с ЧПУ тоже на 404
Roman
raduga на lan.com.ua
Вс Фев 13 00:26:08 MSK 2011
Здравствуйте, Nginx-ru.
nginx/0.8.54
php 5.3.5 FPM/FastCGI
Друзья, никак немогу понять как передавать из скрипта php статус 404,
при ЧПУ сделаном тоже на 404.
Сайт работает на Битрикс.
ЧПУ сделано через /404.php
URL бывают
- прямой вызов скрипта php (/path/script.php)
- c ЧПУ, редирект на реальный скрипт
- если заканчивается на /path/ - вызов /path/index.php
с приведенным конфигом все работает нормально,
кроме ситуации, когда URL с ЧПУ указывает на
несуществующий путь, о чем известно только со стороны php
например:
url /news/102
рерайтится в /news.php?id=102
и эта статья удалена. Без fast-cgi все работало - правильно.
открывался /404.php и возвращался HTTP request status: 404
а сейчас - открывался /404.php но статус - всегда 200
Да, в php:
cgi.rfc2616_headers = 1;
cgi.nph = 0;
конфиг:
location / {
index index.php;
error_page 404 = @bitrix;
error_page 502 /502.htm;
fastcgi_pass unix:/tmp/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_intercept_errors on;
#recursive_error_pages on;
#fastcgi_pass_header Status;
break;
}
location @bitrix {
fastcgi_pass unix:/tmp/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/404.php;
include fastcgi_params;
fastcgi_intercept_errors off;
fastcgi_pass_header Status;
#recursive_error_pages on;
break;
}
--
С уважением,
Roman mailto:raduga at lan.com.ua
Подробная информация о списке рассылки nginx-ru