ПРОЕКТЫ 


  АРХИВ 


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]

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


 




Copyright © Lexa Software, 1996-2009.