maler1988
@maler1988
Web-программист (1С Bitrix)

Почему не срабатывает 404-я ошибка 1С Битрикс?

Сайт лежит на выделенном сервере, сайт на битриксе, имеет стандартный .htaccess

Options -Indexes 
ErrorDocument 404 /404.php

<IfModule mod_php5.c>
	php_value display_errors 1
	php_value mbstring.func_overload 2
	php_value mbstring.internal_encoding UTF-8
	php_value max_input_vars 10000
	php_value pcre.recursion_limit 1000
	php_flag register_globals off
</IfModule>

<IfModule mod_rewrite.c>
	Options +FollowSymLinks
	RewriteEngine On
	RewriteBase /

    RewriteCond %{HTTP_HOST} ^www\.АдресСайта\.ru [NC]
    RewriteRule ^(.*)$ http://АдресСайта/$1 [L,R=301]
    
    #Редирект с index.php и index.html
       RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP
	RewriteRule ^index\.php$ http://АдресСайта/ [R=301,L]
	RewriteCond %{REQUEST_FILENAME} -f [OR]
	RewriteCond %{REQUEST_FILENAME} -l [OR]
	RewriteCond %{REQUEST_FILENAME} -d
	RewriteCond %{REQUEST_FILENAME} [\xC2-\xDF][\x80-\xBF] [OR]
	RewriteCond %{REQUEST_FILENAME} \xE0[\xA0-\xBF][\x80-\xBF] [OR]
	RewriteCond %{REQUEST_FILENAME} [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} [OR]
	RewriteCond %{REQUEST_FILENAME} \xED[\x80-\x9F][\x80-\xBF] [OR]
	RewriteCond %{REQUEST_FILENAME} \xF0[\x90-\xBF][\x80-\xBF]{2} [OR]
	RewriteCond %{REQUEST_FILENAME} [\xF1-\xF3][\x80-\xBF]{3} [OR]
	RewriteCond %{REQUEST_FILENAME} \xF4[\x80-\x8F][\x80-\xBF]{2}
	RewriteCond %{REQUEST_FILENAME} !/bitrix/virtual_file_system.php$
	RewriteRule ^(.*)$ /bitrix/virtual_file_system.php [L]
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-l
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
	RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
	RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>

<IfModule mod_dir.c>
	DirectoryIndex index.php index.html
</IfModule>

<IfModule mod_expires.c>
  ExpiresActive on
  ExpiresByType image/jpeg "access plus 3 day"
  ExpiresByType image/gif "access plus 3 day"
  ExpiresByType image/png "access plus 3 day"
  ExpiresByType text/css "access plus 3 day"
  ExpiresByType application/javascript "access plus 3 day"  
</IfModule>


в общем вместо 404-й выдаёт пустую страницу с ответом 200 ок. Исключение составляют только страницы комплесных компонентов где ошибка 404 обрабатывается не апачем а самим компонентом. В чём может быть косяк? Думаю что-то не так настроено на сервере (это не виртуальный сервер а выделенный, админит его сис.админ клиента) , но что конкретно без понятия.
  • Вопрос задан
  • 1991 просмотр
Пригласить эксперта
Ответы на вопрос 1
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
В настройках главного модуля можно настроить статус ответа 200 на 404ю страницу:
6d73a37bdf914953b3f591c70b6ad283.png

Так же в файле /404.php в начале должно быть так:

<?
include_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/urlrewrite.php');

CHTTP::SetStatus("404 Not Found");
@define("ERROR_404", "Y");
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы