Недавно пришлось переносить сайт на новый сервер, работающий на VMBitrix. VMBitrix это виртуальная машина, предварительно с установленными программным обеспечением, выполняющий роль веб-сервера для платформы Bitrix. Процедура переноса описана в документации Bitrix, мне бы хотелось отметить один момент, который, скорее всего, возникал у многих, кто делал перенос сайта на виртуальную машину.
При переносе сайта, некоторые части сайта не открываются, возникает ошибка:
Not Found The requested URL *some url* was not found on this server.
Как правило, ошибка возникает в компонентах вывода каталога, новостей и т.д., там, где используются возможности модуля mod_rewrite веб-сервера Apache.
Первым делом я переименовал файл .htaccess.restore в .htaccess который находился в корне сайта. Дело в том, что при переносе сайта, файл .htaccess который находиться в бэкапе переименовывается в .htaccess.restore, вместо него генерируется новый файл .htaccess. Судя по всему это сделано для того, чтобы избежать ошибок связанных с этим файлом. Если вдруг вы делали какие-либо изменения в файле, корректные для предыдущего сервера, то при переносе может возникнуть неполадки на новом сервере, но не факт.
У меня была проблема в другом. Причина была в том, что файл .htaccess не считывался вовсе. Стало понятно, что надо настраивать это дело в конфигах Apache. В файле конфигурации есть опция AllowOverride, значение которой нужно изменить вместо «None» установить «All».
Открываем файл конфигурации Apache в редакторе vi, в VMBitrix он находится по адресу /etc/httpd/conf/httpd.conf
# vi /etc/httpd/conf/httpd.conf
Находим строку с записью AllowOverride None, меняем на значение AllowOverride All.
<Directory /> Options FollowSymLinks AllowOverride All </Directory>
Мы сделали следующее:
AllowOverride All – здесь сказано что если существует файл .htaccess, то все (All) директивы прописанные в нем будут выполняться.
После изменения файла конфигурации следует перезапустить сервер Apache:
# service httpd restart
После этого директивы в файле .htaccess должны работать.