Вопрос или проблема
После установки файла htaccess, когда я захожу на сайт на сервере, я получаю ошибку 500. Если я удаляю файл, все работает нормально.
Из журнала ошибок
/var/www/devo/.htaccess: Неверная команда ‘RewriteEngine’, возможно, опечатка или она определена модулем, не включенным в конфигурацию сервера, реферер: http://devo.com/
Копия файла .htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+)$ $1.php [NC,L]
ErrorDocument 404 /devo/404page.php
Ответ или решение
Ошибка 500, возникающая при использовании файла .htaccess на вашем сервере Ubuntu 16.04, обычно связана с неправильной конфигурацией этого файла или отсутствием необходимых модулей Apache. В вашем случае сообщение об ошибке из логов указывает на то, что команда RewriteEngine
не распознается, что может означать, что модуль mod_rewrite не включен.
Шаги для устранения ошибки 500 при использовании .htaccess:
1. Проверьте настройки Apache
Первым делом необходимо убедиться, что модуль mod_rewrite
включен. Этот модуль необходим для работы директивы RewriteEngine
. Для этого выполните следующую команду в терминале:
sudo a2enmod rewrite
После этого, перезапустите Apache для применения изменений:
sudo systemctl restart apache2
2. Проверьте конфигурацию виртуального хоста
Также проверьте настройки вашего виртуального хоста в Apache. Откройте файл конфигурации вашего виртуального хоста, например:
sudo nano /etc/apache2/sites-available/000-default.conf
Внутри блока <Directory>
, который указывает на корень вашего сайта (например, /var/www/devo
), добавьте или измените следующие параметры:
<Directory /var/www/devo>
AllowOverride All
</Directory>
Директива AllowOverride All
позволяет использовать файл .htaccess в данной директории. После внесения изменений, снова перезапустите Apache:
sudo systemctl restart apache2
3. Проверьте файл .htaccess
Убедитесь, что синтаксис вашего файла .htaccess корректен и не содержит ошибок. В представленном вами файле:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+)$ $1.php [NC,L]
ErrorDocument 404 /devo/404page.php
Проверьте:
- Правильность написания всех директив.
- Отсутствие лишних пробелов или опечаток.
4. Просмотрите журналы ошибок
Если после выполнения вышеуказанных шагов ошибка продолжает возникать, проанализируйте логи ошибок Apache для поиска конкретной причины. Логи ошибок находятся, как правило, по следующему пути:
/var/log/apache2/error.log
Используйте команду tail
для просмотра последних записей в файле журнала:
tail -f /var/log/apache2/error.log
5. Проверка прав доступа
Убедитесь, что файл .htaccess и директория, в которой он находится, имеют подходящие права доступа. Обычно, для веб-сервера Apache, директория должна иметь права 755, а файл .htaccess — 644. Измените права доступа при необходимости:
sudo chmod 755 /var/www/devo
sudo chmod 644 /var/www/devo/.htaccess
Заключение
После выполнения всех перечисленных шагов, ваша проблема с ошибкой 500 должна быть устранена. Ошибки такого рода часто связаны с конфигурацией сервера, и, следуя данным рекомендациям, вы сможете быстро выявить и исправить их. В случае возникновения других проблем, не стесняйтесь обращаться за помощью, а также регулярно проверяйте логи ошибок для получения информации о состоянии сервера и приложений.