Меню

Ошибка 500 вместо 404

0 Пользователей и 1 Гость просматривают эту тему.

  • 17 Ответов
  • 3353 Просмотров

После обновления до 3.8.5 и отключения sefwizard и jlnodubles, и включения расширенного роутера, сервер перестал выдавать 404 ошибку на неверные адреса, а выдает 500.
Включение sefwizard и jlnodubles проблемы не решает.
Нашел отдаленно похожую тему, но многое там уже удалено, да и версия 2.5, и ответа в итоге не нашел.

« Последнее редактирование: 14.02.2018, 13:58:13 от Comrade Steel »

Записан

Включите в общих настройках показ ошибок. Тогда увидите что за ошибка сервера. А так можно долго гадать.

Шаблон HELIX?

шаблон shaper_corporex

Включите в общих настройках показ ошибок. Тогда увидите что за ошибка сервера. А так можно долго гадать.

вот такая ошибка

Warning: require_once(/home/srv64687/test1/libraries/joomla/document/html/renderer/head.php): failed to open stream: No such file or directory in
/home/srv64687/test1/templates/shaper_corporex/error.php on line 27 Fatal error: require_once(): Failed opening required '/home/srv64687/test1/libraries/joomla/document/html/renderer/head.php'
(include_path='.:/usr/share/pear:/usr/share/php:/usr/share/pear:/usr/share/php') in /home/srv64687/test1/templates/shaper_corporex/error.php on line 27

Проверил — вроде все файлы по указанным путям на месте

« Последнее редактирование: 08.02.2018, 15:05:57 от Comrade Steel »

Записан

Ну так покажите что там в 27 строке файла /templates/shaper_corporex/error.php
Чего это он файл ядра напрямую подключает.

Ну так покажите что там в 27 строке файла /templates/shaper_corporex/error.php
Чего это он файл ядра напрямую подключает.

require_once(JPATH_LIBRARIES.'/joomla/document/html/renderer/head.php');

Попробуйте так

require_once(JPATH_LIBRARIES.'/src/document/renderer/html/HeadRenderer.php');

Попробуйте так

require_once(JPATH_LIBRARIES.'/src/document/renderer/html/HeadRenderer.php');

Ошибка на странице изменяется на

Warning: require_once(/home/srv64687/test1/libraries/joomla/document/html/renderer/HeadRenderer.php): failed to open stream: No such file or directory in
/home/srv64687/test1/templates/shaper_corporex/error.php on line 27 Fatal error: require_once(): Failed opening required '/home/srv64687/test1/libraries/joomla/document/html/renderer/HeadRenderer.php'
(include_path='.:/usr/share/pear:/usr/share/php:/usr/share/pear:/usr/share/php') in /home/srv64687/test1/templates/shaper_corporex/error.php on line 27

Пардон, сглупил:

Warning: require_once(/home/srv64687/test1/libraries/src/document/renderer/html/HeadRenderer.php): failed to open stream: No such file or directory in
/home/srv64687/test1/templates/shaper_corporex/error.php on line 27 Fatal error: require_once(): Failed opening required '/home/srv64687/test1/libraries/src/document/renderer/html/HeadRenderer.php'
(include_path='.:/usr/share/pear:/usr/share/php:/usr/share/pear:/usr/share/php') in /home/srv64687/test1/templates/shaper_corporex/error.php on line 27

Это

require_once(JPATH_LIBRARIES.'/joomla/document/html/renderer/head.php');

Меняем на это

$header_contents = ‘’;
if(!class_exists(‘JDocumentRendererHead’)) {
$head = JPATH_LIBRARIES . ‘/joomla/document/html/renderer/head.php’;
if(file_exists($head)) {
require_once($head);
}
}

https://www.joomshaper.com/forums/helix-page-error-404-not-display

Меняем на это

Да, благодарю — 404 появилась, но сверху теперь вот это:

И вместо «URL Invalid» было «Страница не найдена»

« Последнее редактирование: 08.02.2018, 15:42:11 от Comrade Steel »

Записан

Скачайте новую версию шаблона helix и возьмите из него error.php
При необходимости, думаю, вёрстку поправить сможете

Скачайте новую версию шаблона helix и возьмите из него error.php
При необходимости, думаю, вёрстку поправить сможете

Спасибо большое, как раз думал над этим, но решил не спешить

Меняем на это

$header_contents = ‘’;
if(!class_exists(‘JDocumentRendererHead’)) {
$head = JPATH_LIBRARIES . ‘/joomla/document/html/renderer/head.php’;
if(file_exists($head)) {
require_once($head);
}
}

Я понял, в чем косяк — сразу внимание не обратил на неправильные кавычки (возможно автор первоисточника намеренно так сделал, кто знает), и своего бездумного копирования, вследствие которых и получился неправильный код. Просто скопировал этот же кусок из нового шаблона, в итоге получилось вот так:

$header_contents = '';
if(!class_exists('JDocumentRendererHead')) {
  $head = JPATH_LIBRARIES . '/joomla/document/html/renderer/head.php';
  if(file_exists($head)) {
    require_once($head);
  }
}

« Последнее редактирование: 09.02.2018, 11:53:06 от Comrade Steel »

Записан

сразу внимание не обратил на опечатки (возможно намеренные, из-за своего бездумного копирования)

Это косяк с кавычками из-за копирования на маке. Я код на айфоне вставлял, а он кавычки по-своему меяет
Таже фигня, говорят, и на макбуках поисходит

Это косяк с кавычками из-за копирования на маке. Я код на айфоне вставлял, а он кавычки по-своему меяет
Таже фигня, говорят, и на макбуках поисходит

У меня Ubuntu, но я так же попробовал скопировать код с первоисточника, что Вы указали, что бы точно исключить ошибку — там та же самая ошибка с кавычками, следственно ошибка еще была в первоисточнике. Вас никоим образом не виню.

« Последнее редактирование: 09.02.2018, 11:58:32 от Comrade Steel »

Записан

там та же самая ошибка с кавычками, следственно ошибка еще была в первоисточнике.

Возможно там копировали также через мак-устройство
проблему такую я не первый раз уже ловлю. Даже когда свой код из одной темы в другую копировал — кавычки заменились. Вот такая она, эта умная техника

Возможно там копировали также через мак-устройство
проблему такую я не первый раз уже ловлю. Даже когда свой код из одной темы в другую копировал — кавычки заменились. Вот такая она, эта умная техника

Понял, в очередной раз спасибо в любом случае — приму к сведению в дальнейшем

This part is responsible for the error. Why does it prevent the 404-error page though?

The reason why this isn’t producing a 404 error page is because of the conditions which prevent the blind match from being rewritten to de/.

These are the 3 preventative conditions you have:

# these prevent rewriting if the URI doesn't point to a resource
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

# this prevents scripts from being rewritten
RewriteCond %{REQUEST_URI} !^.*/(css|scripts)

However, nothing is preventing a rewrite if, for example, /de/blahblah doesn’t exist. Thus if someone requests /blahblah, this is what happens:

  1. URI = /blahblah
  2. checks first condidion: blahblah is not a directory
  3. checks second condition: blahblah is not a file
  4. checks third condition: blahblah isn’t a css or script
  5. rewrites to /de/blahblah
  6. Rewrite engine loops, URI = /de/blahblah
  7. checks first condidion: de/blahblah is not a directory
  8. checks second condition: de/blahblah is not a file
  9. checks third condition: de/blahblah isn’t a css or script
  10. rewrites to /de/de/blahblah
  11. etc. etc.

You need to add an additional set of conditions to rewrite IF the target exists:

RewriteCond %{DOCUMENT_ROOT}/de%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/de%{REQUEST_URI} -d

Thus, you should have something like:

RewriteEngine On
# Don't rewrite requests to /de or other real files
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^.*/(css|scripts)
# make sure rewrite target actually exists as a file or directory
RewriteCond %{DOCUMENT_ROOT}/de%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/de%{REQUEST_URI} -d
# Rewrite incoming requests to their equivalent behind /de
RewriteRule ^(.*)$ de/$1 [L,QSA]

This way, a 404 will get returned because nothing is ever rewritten into the de/ directory.

For some reason, when entering a dud URL to a file/directory/controller that does not exist, the following error is thrown:

System.Web.HttpException
The controller for path » was not found or does not implement IController
System.Web.Mvc.IController > GetControllerInstance(System.Web.Routing.RequestContext, System.Type)

IIS then follows the regular error handling and shows the page appropriate for a 500 Internal Server Error. A 404 Not Found error handling logic should be followed. Another web application I am testing on DOES NOT throw this HttpException when it can’t find a route, and returns 404 normally. So what triggeres this HttpException?

Why and how to follow a 404 route for this type of error instead of a 500? Below is the configuration of the error handling. No other code is handling errors. So why is the 500 error always shown. It’s as if the default handling handles the ‘can’t find controller’ exception as an error when in fact it’s a not-found.

<system.webServer>
 <httpErrors errorMode="Custom" existingResponse="Replace" defaultPath="/StaticErrors/Default.html" defaultResponseMode="ExecuteURL">
   <clear />
   <error statusCode="404" path="/mvcError/Http404" responseMode="ExecuteURL" />    
   <error statusCode="500" path="/mvcError/Http500" responseMode="ExecuteURL" />     
 </httpErrors>
</system.webServer>
<system.web>
 <customErrors defaultRedirect="/StaticErrors/Default.html" mode="On" redirectMode="ResponseRewrite">
   <error redirect="/mvcError/Http404" statusCode="404" />          
   <error redirect="/mvcError/Http500" statusCode="500" />         
 </customErrors>
</system.web>

Failed Request Trace shows this. Basically since no route is round, the HttpException is thrown, and the 500 route handling kicks in, instead of a 404. I’m not doing anything to overide any normal default behaviour. The HandleErrorAttribute is not being added either to the MVC filters.

enter image description here

For some reason, when entering a dud URL to a file/directory/controller that does not exist, the following error is thrown:

System.Web.HttpException
The controller for path » was not found or does not implement IController
System.Web.Mvc.IController > GetControllerInstance(System.Web.Routing.RequestContext, System.Type)

IIS then follows the regular error handling and shows the page appropriate for a 500 Internal Server Error. A 404 Not Found error handling logic should be followed. Another web application I am testing on DOES NOT throw this HttpException when it can’t find a route, and returns 404 normally. So what triggeres this HttpException?

Why and how to follow a 404 route for this type of error instead of a 500? Below is the configuration of the error handling. No other code is handling errors. So why is the 500 error always shown. It’s as if the default handling handles the ‘can’t find controller’ exception as an error when in fact it’s a not-found.

<system.webServer>
 <httpErrors errorMode="Custom" existingResponse="Replace" defaultPath="/StaticErrors/Default.html" defaultResponseMode="ExecuteURL">
   <clear />
   <error statusCode="404" path="/mvcError/Http404" responseMode="ExecuteURL" />    
   <error statusCode="500" path="/mvcError/Http500" responseMode="ExecuteURL" />     
 </httpErrors>
</system.webServer>
<system.web>
 <customErrors defaultRedirect="/StaticErrors/Default.html" mode="On" redirectMode="ResponseRewrite">
   <error redirect="/mvcError/Http404" statusCode="404" />          
   <error redirect="/mvcError/Http500" statusCode="500" />         
 </customErrors>
</system.web>

Failed Request Trace shows this. Basically since no route is round, the HttpException is thrown, and the 500 route handling kicks in, instead of a 404. I’m not doing anything to overide any normal default behaviour. The HandleErrorAttribute is not being added either to the MVC filters.

enter image description here

Igor346

Сообщения: 87
Зарегистрирован: 2016.09.13, 22:59

Вместо 404 получаю 500 ошибку

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

Igor346

Сообщения: 87
Зарегистрирован: 2016.09.13, 22:59

Re: Вместо 404 получаю 500 ошибку

Сообщение

Igor346 » 2017.07.07, 23:39

Понять бы хоть проблема такая сложная, что все светлые головы не знают как решить или спросил, что не так, что помогать никто не хочет…
Здесь: вроде похожий вопрос, но куда вставить, то что порекомендовал samdark не знаю. Т.е. где это устанавливается и главное как?

mkramer

Сообщения: 531
Зарегистрирован: 2014.12.14, 13:02

Re: Вместо 404 получаю 500 ошибку

Сообщение

mkramer » 2017.07.08, 00:02

Точно ли выкидывается 404-ая? Этот Exception ловится самим yii2, и выставляется правильный статус. В логи ошибок лазили? Если 500-я, там должен быть какой-нибудь мат

Igor346

Сообщения: 87
Зарегистрирован: 2016.09.13, 22:59

Re: Вместо 404 получаю 500 ошибку

Сообщение

Igor346 » 2017.07.08, 08:54

05:48:46.347 error yiiwebHttpException:404

exception ‘yiibaseInvalidRouteException’ with message ‘Unable to resolve the request «jmhmg».’ in /home/u695879014/public_html/vendor/yiisoft/yii2/base/Module.php:532
Stack trace:
#0 /home/u695879014/public_html/vendor/yiisoft/yii2/web/Application.php(102): yiibaseModule->runAction(‘jmhmg’, Array)
#1 /home/u695879014/public_html/vendor/yiisoft/yii2/base/Application.php(380): yiiwebApplication->handleRequest(Object(yiiwebRequest))
#2 /home/u695879014/public_html/web/index.php(13): yiibaseApplication->run()
#3 {main}

Next exception ‘yiiwebNotFoundHttpException’ with message ‘Страница не найдена.’ in /home/u695879014/public_html/vendor/yiisoft/yii2/web/Application.php:114
Stack trace:
#0 /home/u695879014/public_html/vendor/yiisoft/yii2/base/Application.php(380): yiiwebApplication->handleRequest(Object(yiiwebRequest))
#1 /home/u695879014/public_html/web/index.php(13): yiibaseApplication->run()
#2 {main}

Igor346

Сообщения: 87
Зарегистрирован: 2016.09.13, 22:59

Re: Вместо 404 получаю 500 ошибку

Сообщение

Igor346 » 2017.07.08, 10:42

Страница стандартная, шаблон с сообщением йишным. Ну т.е. отображается все как надо. В блоке контента, все на своих местах.

Последний раз редактировалось Igor346 2017.07.08, 10:45, всего редактировалось 1 раз.

Igor346

Сообщения: 87
Зарегистрирован: 2016.09.13, 22:59

Re: Вместо 404 получаю 500 ошибку

Сообщение

Igor346 » 2017.07.08, 14:16

mkramer писал(а): ↑2017.07.08, 14:08
Полностью код отлаживать надо, пока всё равно не понятно, что у вас происходит. Попробовал у себя поделать такие штуки — нормальный 404-й статус отдаётся

Немного подробнее если не затруднит, опишите порядок действий по отладке кода полностью.

Igor346

Сообщения: 87
Зарегистрирован: 2016.09.13, 22:59

Re: Вместо 404 получаю 500 ошибку

Сообщение

Igor346 » 2017.07.09, 19:19

В логах апача (Apache-2.2_queriesa.log) есть такая строка:

Код: Выделить всё

site.loc: 127.0.0.1 [09/Jul/2017:19:14:35 +0300] "GET /3543453 HTTP/1.1" 500 31283 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0"

если я правильно понял о чем речь. Но мне она ни о чем к сожалению не говорит, если не сложно поясните. Вопрос: где логи приложения посмотреть?

Igor346

Сообщения: 87
Зарегистрирован: 2016.09.13, 22:59

Re: Вместо 404 получаю 500 ошибку

Сообщение

Igor346 » 2017.07.10, 00:35

В логах приложения, не нашел 500. По ошибке вот, что пишет:

Код: Выделить всё

2017-07-09 19:14:35 [127.0.0.1][-][-][error][yiiwebHttpException:404] exception 'yiibaseInvalidRouteException' with message 'Unable to resolve the request "3543453".' in D:OpenServerdomainssite.locvendoryiisoftyii2baseModule.php:532
Stack trace:
#0 D:OpenServerdomainssite.locvendoryiisoftyii2webApplication.php(102): yiibaseModule->runAction('3543453', Array)
#1 D:OpenServerdomainssite.locvendoryiisoftyii2baseApplication.php(380): yiiwebApplication->handleRequest(Object(yiiwebRequest))
#2 D:OpenServerdomainssite.locwebindex.php(13): yiibaseApplication->run()
#3 {main}

Next exception 'yiiwebNotFoundHttpException' with message 'Страница не найдена.' in D:OpenServerdomainssite.locvendoryiisoftyii2webApplication.php:114
Stack trace:
#0 D:OpenServerdomainssite.locvendoryiisoftyii2baseApplication.php(380): yiiwebApplication->handleRequest(Object(yiiwebRequest))
#1 D:OpenServerdomainssite.locwebindex.php(13): yiibaseApplication->run()
#2 {main}
2017-07-09 19:14:35 [127.0.0.1][-][-][info][application] $_COOKIE = [
    '__utma' => '69645714.1834571958.1489328102.1499548721.1499616868.101'
    '__utmz' => '69645714.1489328102.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)'
    '_ym_uid' => '1494624489937050753'
    '__utmc' => '69645714'
    '__utmb' => '69645714.1.10.1499616868'
    '__utmt' => '1'
]

Аватара пользователя

samdark

Администратор
Сообщения: 9464
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Вместо 404 получаю 500 ошибку

Сообщение

samdark » 2017.07.10, 15:13

Если кидается точно 404, а выводится 500-ка, значит ошибка возникает уже в обработке 404-ой. То есть либо у вас errorHandler свой, либо какой-то из target-ов для логов косячит. Попробуйте убрать всё логирование и использовать стандартную обработку ошибок. Если будет 404 — проблема где-то в них. Начинайте возвращать по одному. Если будет 500 всё-равно, это уже интересно.

Igor346

Сообщения: 87
Зарегистрирован: 2016.09.13, 22:59

Re: Вместо 404 получаю 500 ошибку

Сообщение

Igor346 » 2017.07.11, 18:35

Если не сложно подскажите еще немного, логирование в yii убирается или речь о другом логировании(апач, php)? И как его убрать? errorHandler вроде не писал, просто подключил http exception. Проблема наблюдается как на виртуальном сервере, так и на хостинге.

Почтальон

управление сложностью

1687 / 1300 / 259

Регистрация: 22.03.2015

Сообщений: 7,545

Записей в блоге: 5

1

17.07.2021, 13:18. Показов 6744. Ответов 6

Метки нет (Все метки)


Приветствую, ребята! Подскажите пожалуйста с такой вот непонятной ситуацией. Развернулся на хостинге, все работает исправно, но вот при любой «непонятной ситуации», ответ прилетает 500.19 (0x80070021), есть даже вот такая статейка, но я не совсем понимаю что требуется сделать. Прав не хватает, или хостера потыкать ?

Ошибка 500.19 вместо 404 на хостинге

Возможно не нравится маршрут ?

Веб конфиг настроил так (хотел сделать свои страницы ошибок):

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<system.webServer>
    <handlers>
      <add name="HtmlFileHandler" path="*.html" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
      <add name="SitemapXml" path="sitemap.xml" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
    </handlers>
    <httpErrors errorMode="Custom" existingResponse="Replace" defaultResponseMode="ExecuteURL" defaultPath="/Error/NotFound">
      <remove statusCode="403"/>
      <remove statusCode="404"/>
      <remove statusCode="500"/>
      <error statusCode="403" path="/Error/Forbidden" responseMode="ExecuteURL"/>
      <error statusCode="404" path="/Error/NotFound" responseMode="ExecuteURL"/>
      <error statusCode="500" path="/Error/ServerError" responseMode="ExecuteURL"/>
    </httpErrors>
  </system.webServer>

Возможно что сам что-то не так сделал, подскажите как поправить ?



0



1496 / 1238 / 244

Регистрация: 04.04.2011

Сообщений: 4,356

17.07.2021, 13:48

2

Ajax используете ?



1



Почтальон

управление сложностью

1687 / 1300 / 259

Регистрация: 22.03.2015

Сообщений: 7,545

Записей в блоге: 5

17.07.2021, 14:21

 [ТС]

3

Лучший ответ Сообщение было отмечено OwenGlendower как решение

Решение

MsGuns, нет, только ваш нелюбимый бутстрап

Добавлено через 9 минут
В интернетах вот такое описание ошибки 500

Добавлено через 19 минут
Победил, просто убрал лишнее

XML
1
<httpErrors errorMode="Custom" existingResponse="Replace">



0



1496 / 1238 / 244

Регистрация: 04.04.2011

Сообщений: 4,356

17.07.2021, 14:33

4

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



0



управление сложностью

1687 / 1300 / 259

Регистрация: 22.03.2015

Сообщений: 7,545

Записей в блоге: 5

17.07.2021, 14:47

 [ТС]

5

Цитата
Сообщение от MsGuns
Посмотреть сообщение

Может быть, это от моей некомпетентности

Не-не-не, я вам и вашему опыту доверяю, серьезно

Цитата
Сообщение от MsGuns
Посмотреть сообщение

возникает ощущение, что Вы все делаете как-то чересчур сложно, что можно сделать гораздо проще, гораздо.

Конечно можно, когда есть хорошая практика и форум , а в чем простота заключается ? Дефолтную страницу ошибок поменять ?



0



1496 / 1238 / 244

Регистрация: 04.04.2011

Сообщений: 4,356

17.07.2021, 17:40

6

Цитата
Сообщение от Почтальон
Посмотреть сообщение

а в чем простота заключается ?

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

Сто лет работаю с SQL-серверами. И никогда не делал обработку системных ошибок (нет сети, сервер не доступен, сервер не отвечает и т.д.) — во-первых потому, что такие ошибки возникают нечасто, во-вторых потому, что один раз выданный мессадж (который, кстати и так понятен 90% юзерам) запомнится и больше вопросов не вызовет — проверь подключение к ЛВС/инет и/или звони админу.
Квалификация ошибки нужна обязательно, но контекстная и вариативно описывающая либо неверные действия самого пользователя, либо возникшую независимо от него конфликтную ситуацию в БД.
Все.



1



управление сложностью

1687 / 1300 / 259

Регистрация: 22.03.2015

Сообщений: 7,545

Записей в блоге: 5

17.07.2021, 21:08

 [ТС]

7

MsGuns, по большей части для меня это первый и учебный проект, поэтому всё очень далеко от идеала.



0



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

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

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

Типы ошибок

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

Коды ошибок бывают положительными и отрицательными или успешными и не успешными.

Всего существует 4 типа кодов (хх — сочетание любых цифр):

  • 2xx — запрос выполнен успешно;
  • 3xx — запрос успешно перенаправлен (тоже положительный код);
  • 4xx — ошибка — документ не был отправлен пользователю, так как произошла критическая ошибка. Класс кодов 4xx предназначен для указания ошибок со стороны клиента;
  • 5xx — ошибка сервера — критическая ошибка на сервере. Коды 5xx выделены под случаи неудачного выполнения операции по вине сервера.

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

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Ошибка 400

Bad Request

При переходе на сайт браузер может выдавать “400 Bad Request”. Это означает, что сервер обнаружил синтаксическую ошибку в запросе, который ввел пользователь. Однако подобная ошибка может появляться не только, когда вы вводите адрес сайта, но и, например, при входе в панель управления вашим сайтом. Причин возникновения может быть несколько:

  • блокировка браузера антивирусом;
  • блокировка брендмауэра Windows браузером;
  • большое количество файлов cookies и данных в сache;
  • перебои в работе интернета.

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

Блокировка браузера

  • Изучите настройки вашего антивируса в разделе под названием “Правила для приложений” или схожим с ним.
  • Проверьте, есть ли ваш браузер в списке, и каков уровень доверия к нему.
  • Повысьте уровень доверия к вашему браузеру, если он низкий.
  • Сохраните новые настройки и попробуйте снова зайти в панель управления.

Если ошибка сохраняется, то переходите к проверке следующей причины.

Блокировка брендмауэра Windows

  • Попробуйте отключить брендмауэр на время: меню Пуск — Панель управления — Система и безопасность — Брандмауэр Windows — Включение и отключение.
  • Очистите кэш и куки.
  • Обновите страницы с ошибкой.
  • Если проблема устранена, то для завершения добавьте в брандмауэр разрешенные программы: Пуск — Панель управления — Система и безопасность — Брандмауэр — Разрешение запуска программы через брандмауэр.

Если проблема осталась продолжайте проверку.

Cache и cookies

  • Удалите cookies и очистите cache: нажмите Shift + Ctrl + Delete в то время, когда браузер открыт.
  • Удалите ненужные файлы.
  • Проверьте работу вашего браузера.

Перебои в работе интернета

  • Свяжитесь со своим интернет-провайдером и узнайте, проводятся ли у них какие-то работы.
  • Уточните, сколько времени займут работы.

Ошибка 403

Forbidden

Ошибка 403 означает, что сервер не может выполнить запрос из-за запрета на доступ к запрашиваемым файлам или страницам. Эта ошибка может возникать по ряду причин. Рассмотрим самые распространенные:

  • Индексный файл index.html не загружен в директорию public_html вашего сайта или является некорректным. Для устранения этой ошибки создайте файл с именем index.html или переименуйте уже имеющийся файл. Возможные варианты для имени файла: index.html, index.htm или index.php.
  • Для директории, в которой находится запрашиваемый файл, установлены такие права, что веб-сервер Apache не смог прочитать файл на диске сервера. Для устранения этой ошибки попробуйте изменить права доступа в разделе, отвечающем за настройку прав.
  • Файлы сайта загружены в неправильную директорию. Для устранения этой ошибки проверьте, располагаются ли файлы сайта в директории site/public_html, где site — название вашего сайта.

Ошибка 404

Not Found

Ошибка 404 означает, что сервер не может найти данные по запросу пользователя.
Причины возникновения данной ошибки:

  • Некорректный URL, введенный в адресное поле браузера. Для устранения данной ошибки проверьте, корректно ли указана ссылка.
  • Файл, запрашиваемый по URL, отсутствует на сервере. Для устранения этой ошибки необходимо проверить наличие запрашиваемого файла в директории public_html вашего сайта.

Ошибка 500

Internal Server Error

Ошибка 500 означает, что на сервере есть внутренняя ошибка. Эта проблема может возникнуть по двум причинам:

  • Невозможно запустить скрипт. Скорее всего, указаны неправильные права доступа на папки и файлы. Если на PHP файлы скриптов, размещенных на вашем хостинге, стоят права доступа 777, то исполнение данных скриптов может быть заблокировано сервером. Происходит это из-за того, что права доступа 777 позволяют всем производить любые изменения с данным файлом, что существенно влияет на безопасность и целостность вашего сайта. Для устранения этой ошибки следует проверить права доступа на папки и файлы сайта. Для папок рекомендовано установить права доступа 755, для исполняемых скриптов 600, а для всех остальных файлов 644.
  • Неправильная инструкция в файле .htaccess или наличие в нём неподдерживаемых директив. Возможно, вы ошиблись в написании названия нужной директивы или параметров к ней. Данную ошибку можно устранить, включив лог ошибок error.log. Веб-сервер укажет вам, какую конкретно директиву он посчитал ошибочной — ее нужно будет исправить.

Ошибка 502

Bad Gateway

Данная ошибка — результат запроса, при котором был получен недопустимый ответ от сервера. Причин возникновения проблемы может быть несколько:

  • Проблемы в работе прокси-сервера. Для устранения этой ошибки попробуйте набрать в адресной строке браузера ссылку на какой-либо другой сайт. Тем самым вы можете проверить, есть ли доступ в Интернет вообще. Если вы обнаружили, что доступ в Интернет есть, но ваше обращение к конкретному сайту все равно дает ошибку 502, попробуйте удалить файлы cookies в браузере.
  • Нехватка ресурсов сервера. Это может означать, что нагрузка на сервер превышает ресурсы, доступные на выбранном тарифе хостинга. Уточните у своего хостинг-провайдера информацию о тарифах с большим объемом ресурсов и, в случае необходимости, увеличьте оперативную память или доступный объем диска.

Ошибка 503

Service Temporarily Unavailable

У каждого аккаунта на сервере хостинга есть определенное количество рабочих процессов, выделенное в соответствии с выбранным тарифным планом. Работа с запросами ведется в порядке очереди, они поступают на сервер, где легкие запросы обрабатываются мгновенно, а тяжелые – медленно. Всякая очередь ограничена тем или иным количеством запросов. Если новый запрос находится за пределами этой границы, принят он не будет, и вместо результата браузер выдаст оповещение “Сервис временно недоступен”.

Чтобы исправить данную ошибку нужно знать причины, по которым она может появляться:

1. Зависание скриптов при передаче больших статичных файлов через PHP. Скрипты работают определенное время, а не постоянно. При окончании времени работы скрипта прерывается передача файла, соответственно, файл не будет передан полностью, а также запрос оставит процесс веб-сервера работать еще длительное время. Устранить ошибку вы сможете посредством следующих шагов:

  • Проверить все компоненты и плагины вашей CMS, отключая их по очереди, и найдите самые тяжёлые или испорченные, при работе которых загрузка сайта замедляется. По возможности откажитесь от таких компонентов или поищите более быстрый аналог.
  • Проверить наличие у вас медленных запросов — в папке logs вашего аккаунта создается файл mysql-slow.log. Информация в этом файле обновляется раз в сутки и содержит только самые проблемные SQL-запросы.
  • Если в PHP-скриптах используются Include-функции, загружающие части движка, расположенные на одном аккаунте, убедитесь, что в них используется локальный путь, а не URL вида «http://…». Наличие URL заставляет сервер делать дополнительный HTTP-запрос — это занимает лишнее время и сильно замедляет загрузку сайта.

2. Большое количество запросов к серверу. Причин возникновения таких запросов несколько:

  • Загружаемый ресурс разбит/содержит ссылки на слишком больше число файлов (картинки, таблицы стилей JS-скрипты), которые подгружаются через отдельные запросы. В этом случае следует объединить ресурсы в один файл, где это возможно.
  • DDoS-атаки, флуды, спамы в комментарии также могут вызывать большое количество запросов. В случае DDoS-атаки необходимо определить ее тип, и, согласно ее уровню, предпринять действия по устранению. Подробнее про DDoS-атаки вы можете прочитать в статье «DDoS-атаки: взгляд со стороны Timeweb».

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка 500 барс образование
  • Ошибка 500 банк хлынов