2.4.3.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 і завантажити назад на хостинг.
На іншому хостингу я заливаю в папку файл htaccess з такими двома рядками:
Options +Indexes +Includes -FollowSymLinks
IndexOptions +FancyIndexing
Відповідно коли браузером в ту папку заходжу, отримую список файлів які в тій папці лежать.
Тут отримую помилку 500.
Підкажіть, що саме на що виправити щоб вивести список файлів?