Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: nginx->fast-cgi->php->bitrix -- как ве рнуть 404 из php , с ЧПУ тоже на 404
On Sat, Feb 12, 2011 at 11:26:08PM +0200, Roman wrote:
> Здравствуйте, 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;
Убрать fastcgi_intercept_errors.
> #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;
>
> }
break не нужен. Совсем.
Вообще же, если конфигурация именно такая простая, то достаточно только
location / {
index index.php;
error_page 502 504 /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;
}
location = /502.htm {
...
}
--
Igor Sysoev
http://sysoev.ru/en/
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|