2.20.5. Ошибка 500 Internal Server Error
Достоверно определить причину возникновения ошибки 500 возможно путём анализа Error-лога сайта. Также в обнаружении источника проблемы может помочь техническая проверка сайта.
Директивы в .htaccess
Часто ошибка 500 связана с неправильно указанными директивами в файле .htaccess, который находится в каталоге вашего сайта. Отредактировать этот файл можно с помощью встроенного редактора файл-менеджера или любого FTP-клиента.
Если было установлено, что проблема связана с файлом .htaccess, то вам следует попробовать внести следующие изменения:
Options +FollowSymLinks
— нужно заменить наOptions +SymLinksIfOwnerMatch
.Options All -Indexes
— нужно заменить наOptions -Indexes
.+ExecCGI
— нужно удалить.
На хостинге не используется модуль Apache mod_version
, поэтому если в .htaccess присутствуют блоки с директивами IfVersion
, их также следует удалить, оставив только содержимое блоков, предназначенных для Apache 2.4.
Закомментировать директивы в файле .htaccess можно, поставив в начале строки символ #
.
Неверные права на файлы
Внимание!
Не рекомендуется устанавливать права выше640
для файлов и 750
для каталогов, так как это может привести к ошибке 500.
Если в Error-логе сайта присутствует ошибка «Script file is writable by others», то вам необходимо восстановить стандартные права на файлы по инструкции или вручную, указав для файлов права 640
.
Такая ситуация может возникать при восстановлении из резервной копии или загрузке файлов нового сайта.
Использование старого синтаксиса директивы FilterProvider
В большинстве случаев эту директиву достаточно закомментировать, поскольку она используется для включения сжатия на основе Content-Type
, а на нашем хостинге за сжатие отвечает nginx и до Apache чаще всего эти запросы не доходят.
В формате Apache 2.2 директива выглядит так:
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/html
В Apache 2.4 эта же директива выглядит так:
FilterProvider COMPRESS DEFLATE "%{CONTENT_TYPE} = 'text/html'"
Исправить ситуацию можно путём изменения синтаксиса директив со старого на новый.
Комментарии в конце строки
Комментарии в конце строки могут вызывать ошибку «…htaccess: No comments are allowed here».
В более новых версиях Apache для написания комментария требуется вся строка. То есть когда вы добавляете символ #
, чтобы сделать комментарий, он должен быть первым непустым символом в строке. Если вы добавите какие-либо непустые символы перед знаком решетки, получите ошибку 500.
Например, любой из этих комментариев является правильным:
# this is a comment ## this is another comment ### multiple pound signs are fine
Примеры недопустимых комментариев, приводящих к ошибке:
ExpiresActive on # this will trigger an error RedirectMatch 403 /spamhole/ # this will trigger an error # this will trigger an error
BOM-символы
В .htaccess при редактировании сторонними редакторами могут быть записаны невидимые BOM-символы, из-за которых и возникает ошибка. Для устранения проблемы следует открыть файл в каком-либо редакторе, пересохранить его в чистой кодировке UTF-8 и загрузить обратно на хостинг.