Internal server error ошибка htaccess

I receive 500 internal server error on my website. I think this is because of .htaccess file, but I don’t know what’s wrong with it.

Server: DirectAdmin, Linux-based

Contents of the .htaccess file is as the following:

# BEGIN All In One WP Security
#AIOWPS_BLOCK_WP_FILE_ACCESS_START
<files license.txt>
order allow,deny
deny from all
</files>
<files wp-config-sample.php>
order allow,deny
deny from all
</files>
<files readme.html>
order allow,deny
deny from all
</files>

#AIOWPS_BLOCK_WP_FILE_ACCESS_END
#AIOWPS_BASIC_HTACCESS_RULES_START
<files .htaccess>
order allow,deny
deny from all
</files>
ServerSignature Off
LimitRequestBody 10240000
<files wp-config.php>
order allow,deny
deny from all
</files>
#AIOWPS_BASIC_HTACCESS_RULES_END
#AIOWPS_PINGBACK_HTACCESS_RULES_START
<IfModule mod_alias.c>
RedirectMatch 403 /(.*)/xmlrpc.php$
</IfModule>
#AIOWPS_PINGBACK_HTACCESS_RULES_END
#AIOWPS_DISABLE_INDEX_VIEWS_START
Options All -Indexes
#AIOWPS_DISABLE_INDEX_VIEWS_END
#AIOWPS_DISABLE_TRACE_TRACK_START
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
#AIOWPS_DISABLE_TRACE_TRACK_END
#AIOWPS_FIVE_G_BLACKLIST_START
# 5G BLACKLIST/FIREWALL (2013)
# @ http://perishablepress.com/5g-blacklist-2013/

# 5G:[QUERY STRINGS]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ("|%22).*(<|>|%3) [NC,OR]
RewriteCond %{QUERY_STRING} (javascript:).*(;) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3) [NC,OR]
RewriteCond %{QUERY_STRING} (\|../|`|='$|=%27$) [NC,OR]
RewriteCond %{QUERY_STRING} (;|'|"|%22).*(union|select|insert|drop|update|md5|benchmark|or|and|if) [NC,OR]
RewriteCond %{QUERY_STRING} (base64_encode|localhost|mosconfig) [NC,OR]
RewriteCond %{QUERY_STRING} (boot.ini|echo.*kae|etc/passwd) [NC,OR]
RewriteCond %{QUERY_STRING} (GLOBALS|REQUEST)(=|[|%) [NC]
RewriteRule .* - [F]
</IfModule>

# 5G:[USER AGENTS]
<IfModule mod_setenvif.c>
# SetEnvIfNoCase User-Agent ^$ keep_out
SetEnvIfNoCase User-Agent (binlar|casper|cmsworldmap|comodo|diavol|dotbot|feedfinder|flicky|ia_archiver|jakarta|kmccrew|nutch|planetwork|purebot|pycurl|skygrid|sucker|turnit|vikspider|zmeu) keep_out
<limit GET POST PUT>
Order Allow,Deny
Allow from all
Deny from env=keep_out
</limit>
</IfModule>

# 5G:[REQUEST STRINGS]
<IfModule mod_alias.c>
RedirectMatch 403 (https?|ftp|php)://
RedirectMatch 403 /(https?|ima|ucp)/
RedirectMatch 403 /(Permanent|Better)$
RedirectMatch 403 (=\'|=\%27|/\'/?|).css()$
RedirectMatch 403 (,|)+|/,/|{0}|(/(|...|+++|||\"\")
RedirectMatch 403 .(cgi|asp|aspx|cfg|dll|exe|jsp|mdb|sql|ini|rar)$
RedirectMatch 403 /(contac|fpw|install|pingserver|register).php$
RedirectMatch 403 (base64|crossdomain|localhost|wwwroot|e107_)
RedirectMatch 403 (eval(|_vti_|(null)|echo.*kae|config.xml)
RedirectMatch 403 .well-known/host-meta
RedirectMatch 403 /function.array-rand
RedirectMatch 403 );$(this).html(
RedirectMatch 403 proc/self/environ
RedirectMatch 403 msnbot.htm)._
RedirectMatch 403 /ref.outcontrol
RedirectMatch 403 com_cropimage
RedirectMatch 403 indonesia.htm
RedirectMatch 403 {$itemURL}
RedirectMatch 403 function()
RedirectMatch 403 labels.rdf
RedirectMatch 403 /playing.php
RedirectMatch 403 muieblackcat
</IfModule>

# 5G:[REQUEST METHOD]
<ifModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
</IfModule>

# 5G:[BAD IPS]
<limit GET POST PUT>
Order Allow,Deny
Allow from all
# uncomment/edit/repeat next line to block IPs
# Deny from 123.456.789
</limit>
#AIOWPS_FIVE_G_BLACKLIST_END
#AIOWPS_BLOCK_SPAMBOTS_START
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} ^(.*)?wp-comments-post.php(.*)$
RewriteCond %{HTTP_REFERER} !^http://(.*)?.spna.co.ir [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule .* http://127.0.0.1 [L]
</IfModule>
#AIOWPS_BLOCK_SPAMBOTS_END
# END All In One WP Security

# BEGIN W3TC Browser Cache
<IfModule mod_deflate.c>
<IfModule mod_headers.c>
Header append Vary User-Agent env=!dont-vary
</IfModule>
AddOutputFilterByType DEFLATE text/css text/x-component application/x-javascript application/javascript text/javascript text/x-js text/html text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon application/json
<IfModule mod_mime.c>
# DEFLATE by extension
AddOutputFilter DEFLATE js css htm html xml
</IfModule>
</IfModule>
# END W3TC Browser Cache
# BEGIN W3TC Page Cache core
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteRule .* - [E=W3TC_ENC:_gzip]
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} =""
RewriteCond %{REQUEST_URI} /$
RewriteCond %{HTTP_COOKIE} !(comment_author|wp-postpass|w3tc_logged_out|wordpress_logged_in|wptouch_switch_toggle) [NC]
RewriteCond "%{DOCUMENT_ROOT}/wp-content/cache/page_enhanced/%{HTTP_HOST}/%{REQUEST_URI}/_index.html%{ENV:W3TC_ENC}" -f
RewriteRule .* "/wp-content/cache/page_enhanced/%{HTTP_HOST}/%{REQUEST_URI}/_index.html%{ENV:W3TC_ENC}" [L]
</IfModule>
# END W3TC Page Cache core
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

And here’s what the Apache Error Log says:

[Thu Jan 16 00:19:08 2014] [alert] [client 157.55.35.85] /home/sapna/domains/spna.co.ir/public_html/.htaccess: Option All not allowed here

I would be grateful if you help me find out what causes the 500 internal server error.

Thanks.

Страницу с кодом ответа 500 веб-сервер возвращает, когда не может обработать запрос из-за ошибок в файлах сайта.

Внешний вид ошибки 500 зависит от того, чем она вызвана. При неполадках в скриптах сайта отобразится пустая страница, сообщение HTTP ERROR 500 или текст обработчика PHP.

Если проблема в файле .htaccess — сообщение Internal Server Error.

Часто ошибку 500 можно легко устранить даже не имея знаний в области веб-разработки. О том, как это сделать, расскажем далее.

Ошибки в файле .htaccess

Сообщение Internal Server Error выводится, когда в файле .htaccess есть ошибки. Переименуйте файл .htaccess и проверьте корректность работы сайта. Если он доступен, удалите правила, которые были добавлены последними, или восстановите старый файл из резервной копии.

Ошибки в скриптах сайта

Пустая страница — не всегда признак ошибки 500. Поэтому в первую очередь узнайте код ответа, с которым она открывается. Это можно сделать при помощи инструментов разработчика в браузерах.

Инструменты разработчика — функция для исследования работы сайта. Она позволяет узнать время ответа сервера, код ответа, посмотреть текст возникших ошибок и многое другое.

Нажмите сочетание клавиш Ctrl+Shift+I или используйте меню браузера:

  • Mozilla Firefox — «Веб-разработка» → «Инструменты разработчика»;
  • Google Chrome — «Дополнительные инструменты» → «Инструменты разработчика»;
  • Opera — «Разработка» → «Инструменты разработчика».

Перейдите во вкладку «Сеть (Network)». На ошибку 500 указывает соответствующее число в колонке «Статус».

Статус пустой страницы может быть и 200 (Ok). В таком случае проверьте, есть ли содержимое в индексном файле сайта, очистите кеш вашей CMS. Если ранее сайт работал корректно, восстановите его из резервной копии.

Вывод ошибок на сайте

Вывод ошибок PHP на хостинге по умолчанию выключен. Чтобы увидеть их текст, добавьте в файл .htaccess правило: php_value display_errors 1 и обновите страницу сайта.

Если текст не отобразился, включите вывод ошибок через конфигурационный файл CMS. Он расположен в корневой директории сайта.

WordPress

Замените в файле wp-config.php строку define(‘WP_DEBUG’, false); на define(‘WP_DEBUG’, true);

Joomla

Измените значение переменных debug и error_reporting в configuration.php на: public $debug = '1'; и public $error_reporting = 'maximum';

1С-Битрикс

В конфигурационном файле по пути ~/public_html/bitrix/php_interface/dbconn.php замените значение переменных DBDebug и DBDebugToFile на: $DBDebug = true; и $DBDebugToFile = true;

Laravel

В файле .env измените APP_DEBUG=false на APP_DEBUG=true

Алгоритм устранения ошибки можно найти в интернете, поместив ее текст в строку любой поисковой системы. Если с помощью найденной информации возобновить работу сайта не получится, восстановите его из резервной копии. Наши специалисты могут помочь с восстановлением. Для этого направьте обращение из раздела «Поддержка» Панели управления.

Журнал ошибок PHP

Иногда ошибка не выводится на странице или возникает периодически: ее тяжело отследить. Чтобы узнать текст таких ошибок, записывайте информацию о них в файл — журнал ошибок PHP. Подключите его, добавив в .htaccess строку: php_value error_log /home/username/domains/domain.ru/php_errors.log и обновите страницу сайта.

Откройте создавшийся файл журнала с помощью Файлового менеджера в Панели управления. Чтобы просматривать возникающие ошибки в реальном времени, отметьте опцию «Включить автообновление».

Быстро возобновить работу сайта можно, восстановив его из резервной копии за дату, когда ошибок не было. Если восстановление нежелательно, обратитесь к разработчику.

Для устранения некоторых ошибок не требуется специальных знаний. Рассмотрим самые распространенные.

Нехватка оперативной памяти

Ошибка с текстом Allowed memory size возникает из-за нехватки оперативной памяти для выполнения скрипта: PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 81 bytes) in /home/username/domains/domain.ru/public_html/somescript.php

Чтобы исправить ее, увеличьте лимит оперативной памяти, добавив в файл .htaccess директиву:

php_value memory_limit 512M

Вместо «512» укажите необходимый объем памяти. Максимальное значение ограничивается тарифом.

Текст Out of memory означает, что достигнут лимит оперативной памяти по тарифному плану:

PHP Fatal error: Out of memory (allocated 39059456) (tried to allocate 262144 bytes) in /home/username/domains/domain.ru/public_html/somescript.php

Оптимизируйте работу скриптов, чтобы они потребляли меньше памяти. Объемную загрузку или выгрузку данных производите частями. Если оптимизацию произвести невозможно, измените тариф на тот, по которому предоставляется достаточно памяти для комфортной работы сайта.

Ошибки в CMS

При обновлении CMS случаются синтаксические ошибки:

PHP Parse error: syntax error, unexpected '[', expecting ')' in /home/username/domains/domain.ru/public_html/wp-content/plugins/wordpress-23-related-posts-plugin/config.php on line 130

Это происходит из-за того, что новые функции CMS не поддерживают устаревшие версии PHP. Чтобы исправить ошибку, измените версию PHP для сайта на более современную в разделе «Сайты» → «Веб-серверы».

Если предыдущая рекомендация не помогла, обратите внимание на путь до неработающего скрипта: там может быть указан каталог плагина или темы. Чтобы исправить ошибку, отключите их. Для этого переименуйте папку, в которой они расположены. После устранения ошибки авторизуйтесь в административной части сайта и измените тему или переустановите плагин.

Чтобы исправить большинство ошибок PHP, достаточно изучить их текст и принять меры, указанные в статье. Если вам не удается справиться с ней самостоятельно, обратитесь в службу поддержки.

Была ли эта инструкция полезной?

Ошибка 500 Internal Server Error

Протокол HTTP иногда показывает статус — 500. Это означает неисправность в конфигурации сервера. Фактически она говорит об отказе системного компонента, но на деле проблема куда менее глобальна.

Появление ошибки 500 Internal Server Error говорит только о том, что сервер работает в нормальном режиме, однако некоторые запросы не обрабатываются должным образом.

Такая ошибка может появиться на любом интернет ресурсе без исключений. Администраторы заранее для неё прописывают конфигурацию и альтернативные действия в случае ее появления.

Если вы арендуете VPS, а надпись возникает слишком часто, то это явная причина для смены сервера на более мощный. Исправить же положение на текущем, могут программисты. В этом случае нужно изменить и усовершенствовать код внутренних страниц сайта.

Первое: неправильно распределены права доступа

Для каждого домена используются скрипты, работающие в штатном режиме.
Неполадка с номером 500 может случиться, если на script установлены не те права доступа.

Последствия: пока неполадка не устранена, теоретически злоумышленники могу вносить изменения в файл с правами 777.

Как исправить: установить нужные права. Если для папок рекомендуемое значение — 755, то для скриптов 644, а не 777.

Желательно, чтобы все права на файлы в домене были заданы от одного юзера.

Второе: скрипт работает слишком долго

Помимо того, что для работы каждого кода отводится определенное время работы от PHP, такое же ограничение накладывает и сам сервер.
Если с точки зрения php всё соблюдено, то сервер может сообщать об ошибке, — 500 Internal Server Error.

Последствия: если сервер не получает ответа, то он считает работу незаконченной или потенциально не способной завершиться, поэтому работа плагина или script будет прекращена.

Как исправить: чтобы неполадка не появлялась, необходимо найти и отладить код. Чаще всего медленный участок кода заметен сразу при тестировании. Техподдержка хостинга не обязана помогать вам в поиске, однако вы можете обратится за помощью к автору софта или движка сайта.

Третье: htaccess

У скрытого файла с таким названием строгий синтаксис, нарушение которого автоматически ведет к появлению ошибки. Бывает так, что вы вписали директиву, оформили её правильно с точки зрения синтаксиса, но она не поддерживается.

Последствия: страница не будет работать.

Как исправить: находим в корневом участке домена файл htaccess и исправляем внутри синтаксис. Если после этого сайт не будет работать по прежнему, то рекомендуется загрузить новый «чистый» файл и использовать его в качестве замены текущего. Еще можно открыть файл Error.log. В нём легко найти ошибочную директиву и исправить.

Четвертое: отсутствие нужного количества памяти

Если ваш скрипт использует определенное количество информации, то сервер сразу рассчитывает для него некий объем памяти. В случае, если скрипт захочет больше памяти, а ее нет, то появляется 500 error.

Последствия: до увеличения объема потребления памяти, скрипт так и будет выключать страницу.

Как исправить: поскольку Error появляется в качестве защиты, то необходимо проверить код на наличие фрагментов, которые могут быть чрезмерно требовательными или же просто увеличить количество оперативной памяти на сервере.

Недавно ко мне обратились из компании, занимающейся созданием сайтов, за консультацией. Были жалобы на нестабильную работу сайта. Нестабильность заключалась в том, что при сохранении публикации сайт вешался. Решение проблемы, когда возникает ошибка 500, я напишу далее. Я представлю как универсальные методы решения проблемы, которые помогут владельцам сайтов с любыми системами управления, так и направленные на решение проблемы пользователей WordPress.

Почему возникает ошибка 500(Internal Server Error)?

  • Проблема в файле .htaccess;
  • Некорректная работа с CGI скриптами;
  • Нехватка памяти;
  • Нехватка времени выполнения скрипта;
  • Некорректная работа плагинов;
  • Повреждение файлов.

Решение проблемы с файлом .htaccess:

Самой распространенной проблемой возникновения ошибки 500(Внутренняя ошибка сервера) является наличие в файле .htaccess команд, которые не поддерживаются сервером, либо просто неверный синтаксис команд.

Решение проблемы некорректной работа с CGI скриптами:

  • Скрипты формируют неверные заголовки и необходимо смотреть логи, которые доступны из панели управления хостингом в разделе «Статистика»;
  • Скрипты необходимо загружать на сервер по FTP  в режиме ASCII, чтобы окончания строк в скриптах были в формате UNIX — n, а не в формате Windows — nr;
  • Скрипты и папки должны быть доступны для записи только владельцу, то есть необходимо выставить права — 0755 (drwxr-xr-x).

Решение проблемы нехватки памяти:

Иногда проблема может возникать, если вы превышаете лимит выделенной памяти(PHP memory limit).

Если у вас возникает ошибка 500 при переходе в админку, при загрузке изображения или при публикации записи, то скорее всего вам поможет увеличение лимита памяти доступной PHP. Это можно сделать отредактировав существующий файл php.ini(посмотреть где он находится можно с помощью функции phpinfo(), строка — Loaded Configuration File), либо создав свой файл в корне сайта(для пользователей WordPress в wp-admin).

В php.ini необходимо написать / исправить строку: ;

memory = 64MB

Владельцы WordPress могут поступить более удобным для них образом — открыть файл wp-config.php, который лежит в корне сайта, и добавить туда следующую строку:

define('WP_MEMORY_LIMIT', '64M');

В действительности, решение проблемы таким образом скорее всего временное, так как какой-то процесс забивает память и в будущем это может произойти снова. Поэтому я рекомендую провести анализа логов, чтобы понять, из-за чего именно возникает ошибка 500.

Решение проблемы нехватки времени выполнения скрипта:

Так же, как в случае с памятью, у вас может возникнуть ситуация, когда скрипт просто не успел отработать за то время, которое ему для этого отводится. По умолчанию время выполнения скрипта ограничивается 30-ю секундами. Способы увеличения лимита далее.

Аналогично предыдущему методу работаем с php.ini:

max_execution_time = 60

Использование функции PHP — можно написать следующий код вначале какого-либо PHP файла, который запускается при возникновении проблемы(например в index.php):

ini_set( 'max_execution_time', 60 ); // 60 секунд

Работа с .htaccess:

php_value max_execution_time 60

Пользователи WordPress могут использовать плагин — WP Maximum Execution Time Exceeded.

Решение проблемы с помощью отключения плагинов:

Бывает так, что ошибка 500 возникает из-за того, что в самом плагине / модуле существует какая-либо ошибка, чаще логическая, которая приводит к негативным последствиям. Выявить «испорченный» плагин можно таким способом:

  • Отключите все плагины;
  • Включите первый плагин, который до этого работал вместе со всеми;
  • Производите действия, которые ранее приводили к ошибке;
  • Если ошибка не возникает, отключайте этот плагин и включайте следующий и т.д. пока не выявите «брак».

Если вы пользователь WordpPress и не можете зайти в админку, так как возникает ошибка 500, зайдите на сервер по FTP и переименуйте папку wp-content/plugins, в этом случае плагины автоматически отключатся, когда вы в следующий раз обратитесь к админке и если проблема была в каком-то из них, то вы войдете в админку. Далее надо будет обратно переименовать папку plugins и работать по вышеуказанной схеме.

Решение проблемы с повреждением файлов:

Если ни один из перечисленных способов до сих пор не помог решить проблему, попробуйте перезалить дистрибутив системы. Если речь идет о WordPress, то скачайте архив, распакуйте его и перебросьте файлы на сервер, либо залейте на сервер архив и распакуйте его там с заменой файлов. Вероятно какой-то из файлов системы мог быть поврежден.

Если после этой процедуры все заработает, то стоит задуматься о том, каким образом файл системы мог быть поврежден.

Что делать, если ничего не помогло?

Если ничего из вышеперечисленного не помогло, это значит, что вам все же придется либо самому, либо с помощью техподдержки хостинга анализировать логи и искать проблему более тщательно. Либо можно обратиться за помощью к профессионалам.

Post Views: 1 549

Last modified: March 11, 2020

Overview

What is a 500 Internal Server Error?

For every request that is sent to a server, there is an http status code that is returned. These status codes will be returned as a 3 digit number (200, 403, 404, 500, 502, etc). Each of these numbers provide some indication as to what type of issue is preventing your site from loading. The 5XX errors indicate that a request has been sent to the server, but some technical issue has prevented this request from being completed.

The 500 Internal Server Error in particular is a catch-all error message, given when no more specific message is suitable.  There can be a number of causes for a 500 Internal Server Error to display in a web browser. Below is a sample of what a 500 error message will look like.

Common Causes

Below are common troubleshooting steps that can be taken to resolve a 500 Internal Server Error:

  1. Check the error logs
  2. Check the .htaccess file
  3. Check your PHP resources
  4. Check CGI/Perl scripts

Check the Error Logs!

With any error message, particularly one as broad as the 500 Internal Server Error, you will first want to check any Apache and PHP error logs for your server. These logs can provide valuable context related to any code failures or other potential causes of a site failure. For information on where to find the logs for your server, please see: Where are the access_log and error_log for my server?

Error with an .htaccess file

If you are using a .htaccess on your site, it may be interfering with the web page you are trying to load into your browser. Please double check the .htaccess configuration. Any syntax errors will cause a 500 Internal Server Error message to be displayed instead of your website.

To confirm whether a misconfiguration .htaccess is the cause of the 500 Internal Server error, either remove or rename the .htaccess file temporarily and then try to reload the page.

See also:

  • Using .htaccess rewrite rules
  • Using .htaccess files

PHP Coding Timing Out

If your PHP script makes external network connections, the connections may time out. If too many connections are attempted and time out, this will cause a «500 Internal Server Error.» To prevent these time outs and errors, you’ll want to make sure that PHP scripts be coded with some timeout rules. Typically, however, catching a timeout error when connecting to a database or externally to remote resources (example: RSS feeds) are difficult. They, in effect, freeze the script from continuing to run.

Removing any external connections can increase both the performance of your website and decrease the chances of you receiving a «500 Internal Server Error.»

You can also attempt to increase your PHP resource limits. PHP resource limits. PHP resource limits.

Syntax or coding errors in your CGI/Perl script

If it is a web page ending in .cgi or .pl that is producing the error, check your script for errors. For detailed troubleshooting tips, please see: Troubleshooting CGI/PERL scripts.

CGI Script Guidelines

  • When editing your CGI script, use a plain text editor — a program that saves the file as a ‘text file’ type. DO NOT use Wordpad that comes with Microsoft Windows because it doesn’t save files in pure ASCII text format. Use Notepad instead to edit files.
  • Upload your CGI scripts in ASCII mode into the cgi-bin directory.
  • Set the file permissions on the CGI script file and directories to be chmod 755. If you use an FTP program to transfer files, right-click on the file and select change file attributes. See Using FTP and SFTP for more information.
  • Double-check that the Perl modules you require for your script is supported. For a list of the currently supported Perl modules, please click here.

Advanced Support can help!

Need further assistance with your server? Help is available via Advanced Support, our premium services division. For more information on what Advanced Support can do for you, feel free to click here.

Понравилась статья? Поделить с друзьями:
  • Internal json rpc error metamask ошибка
  • Internal error including corrupted data ошибка принтера samsung
  • Internal error 0xc8 принтер ошибка
  • Interface not supported excel ошибка
  • Interface auto detection routine failed cascade ошибка