Бывает, что после переноса сайта или настройки многосайтовости страницы, которые выводятся динамически с ЧПУ, выдают такое: Not Found. The requested URL ... was not found on this server.
Как это исправить?
Например, у вас есть каталог товаров, на странице index.php стоит компонент вывода, инфоблок настроен, urlrewrite.php в порядке, а вот not found, и все тут.
Решение проблемы простое, но требует правки настроек сервера. В Битриксе есть свой обработчик 404 ошибки, и сообщение об отсутствующей странице выводится в шаблоне сайта. А если не в шаблоне, значит, Битрикс ошибку обработать не может, и её обрабатывает Апач.
Как такое происходит? Чтобы Битрикс вывел динамическую страницу с ЧПУ, ему нужен файл urlrewrite.php, где прописаны правила обработки ЧПУ. Путь к urlrewrite.php прописан в файле .htaccess, который лежит в корне сайта.
В общем случае он должен выглядеть так:
Options -Indexes ErrorDocument 404 /404.php
php_value mbstring.func_overload 2
php_value mbstring.internal_encoding utf-8
php_value max_input_vars 20000
<IfModule mod_php5.c>
php_flag session.use_trans_sid off
#php_value display_errors 1
#php_value mbstring.internal_encoding UTF-8
</IfModule>
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
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> |
Значит, или в .htaccess не прописан блок
<IfModule mod_rewrite.c> Options +FollowSymLinks
RewriteEngine On
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> |
или в конфиге Апача не включена обработка файла .htaccess, и инструкции в нём не выполняются.
Чтобы обработка .htaccess заработала, пропишите в параметрах виртуального сервера в файле конфигурации Апача
и перезапустите Апач.