Допустим, вы сделали сайт, но у вас нет тестировщика, который может всё проверить. Вот короткая инструкция, на что смотреть, чтобы с большой вероятностью после запуска всё было в порядке.
В больших компаниях каждым пунктом из этой статьи могут заниматься целые отделы, сотрудники которых досконально проверяют каждую мелочь — руками или автоматически. Но представим, что сейчас под рукой нет IT-департамента. Что можно сделать самостоятельно и быстро, чтобы проверить, что всё работает как задумано. Предупреждение: статья не претендует на академическую полноту, но точно поможет что-нибудь не упустить. Сначала нужно проверить, что всё выглядит, как задумано заказчиком — сайт совпадает с макетом, кнопки работают и ссылки ведут, куда нужно. Что проверять: Иногда используют автоматические тесты, которые сравниваются отрендеренный результат кода аля интерфейс с рендер-версией приложения. Фактически, это сравнение скриншотов. Конечно, автотесты можно подготовить и для тестирования интерактивных элементов. Инструменты: Если в коде есть ошибки, их будет видно в консоли разработчика. Также там можно обратить внимание на запросы (время и коды ответов) и посмотреть размер загружаемых файлов. И если размер большой, обсудить с разработчиками оптимизацию кода на JavaScript, шрифтов и изображений. Нужно убедиться, что код удовлетворяет стандартам HTML/CSS, для этого есть специальные валидаторы. Узнайте, как проверить валидность HTML. Формы — кладезь пользовательских данных и одновременно потенциальный источник уязвимостей. Формы должны быть удобными для пользователя и безопасными для сайта. Что проверять: Проверьте, что все ссылки ведут на настоящие сайты и не ведут на 404. Для этого тоже есть несколько инструментов. На главной не должно быть ссылки на главную. Если пользователи сайта говорят на разных языках, сайт локализуют — готовят тексты на разных языках и добавляют переключалку с флагами. Но недостаточно проверить перевод текстов в интерфейсе, ошибок и документации — есть ещё ряд нюансов. Например, нужно проверить представление дат и времени, поддерживает ли шрифт локальные символы, и есть ли режим RTL для стран, где текст читается справа налево. Пользователи уходят, если сайт грузится медленно. Поэтому нужно проверить, что ваш сайт не такой. Что проверять Иногда скорость загрузки зависит от контента, который используется на странице. Вот советы, как его оптимизировать. На курсах HTML Academy сайты верстают и готовят к публикации на основе критериев качества — длинного списка правил, который нужен, чтобы делать сразу хорошо. Критерии включают не только то, что написано в этой статье — там гораздо больше мелочей, которые должен знать хороший фронтенд-разработчик.Всё посмотреть и прокликать
Ошибки JavaScript
Валидность кода
Веб-формы
Неправильные ссылки
Локализация
Производительность сайта
Критерии качества
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
ТелеграмПодкастБесплатные учебники
Список кодов состояния HTTP
Код состояния HTTP (англ. HTTP status code) — является частью первой строки ответа сервера. Он представляет собой целое число из трех арабских цифр. Первая цифра указывает на класс состояния. За кодом ответа обычно следует отделённая пробелом поясняющая фраза на английском языке, которая разъясняет человеку причину именно такого ответа.
Клиент узнаёт по коду ответа о результатах его запроса и определяет, какие действия ему предпринимать дальше. Набор кодов состояния является стандартом, и они описаны в соответствующих документах RFC. Введение новых кодов должно производиться только после согласования с IETF. Тем не менее, известно о двух используемых кодах, не упомянутых в RFC: 449 Retry With (введён Microsoft) и 509 Bandwidth Limit Exceeded (введён в cPanel).
Клиент может не знать все коды состояния, но он обязан отреагировать в соответствии с классом кода. В настоящее время выделено пять классов кодов состояния.
Веб-сервер Microsoft Internet Information Services в своих файлах журналов кроме стандартных кодов состояния использует подкоды записывая их через точку после основного. При этом в ответах от сервера данный субкод не размещается — он нужен администратору сервера чтобы тот мог более точно определять источники проблем. Со списком подкодов IIS можно ознакомиться в документе «Коды состояния служб IIS» в Базе знаний Microsoft.
1xx: Informational (Информационные)
В этот класс выделены коды, информирующие о процессе передачи. В HTTP/1.0 сообщения с такими кодами должны игнорироваться. В HTTP/1.1 клиент должен быть готов принять этот класс сообщений как обычный ответ, но ничего серверу отправлять не нужно. Сами сообщения от сервера содержат только стартовую строку ответа и, если требуется, несколько специфичных для ответа полей заголовка. Прокси-сервера подобные сообщения должны отправлять дальше от сервера к клиенту.
100 Continue (Продолжать) — Сервер удовлетворён начальными сведениями о запросе, клиент может продолжать пересылать заголовки. Появился в HTTP/1.1.
101 Switching Protocols (Переключение протоколов) — Сервер предлагает выбрать другой протокол, более соответствующий данному ресурсу. Протоколы предлагаемый сервером, указываются в строке заголовка Update, если предложенный сервером протокол, устраивает клиента, он высылает новый запрос с указанием нового протокола. Появился в протоколе версии HTTP/1.1.
102 Processing (Идёт обработка) — Запрос принят, но на его обработку понадобится длительное время. Используется сервером, чтобы клиент не разорвал соединение из-за превышения времени ожидания. Клиент при получении такого ответа должен сбросить таймер и дожидаться следующей команды в обычном режиме. Появился в WebDAV.
105 Name Not Resolved (Не удается преобразовать DNS-адрес сервера) — При разрешении доменного имени возникла ошибка в связи с неверным или отсутствующем IP-адресом DNS-сервера.
2xx: Success (Успешно)
Сообщения данного класса информируют о случаях успешного принятия и обработки запроса клиента. В зависимости от статуса сервер может ещё передать заголовки и тело сообщения.
200 OK (Хорошо) — Успешный запрос. Если клиентом были запрошены какие-либо данные, то они находятся в заголовке и/или теле сообщения. Появился в HTTP/1.0.
201 Created (Создано) — В результате успешного выполнения запроса был создан новый ресурс. Сервер должен указать его местоположение в заголовке Location. Серверу рекомендуется ещё указывать в заголовке характеристики созданного ресурса (например, в поле Content-Type). Если сервер не уверен, что ресурс действительно будет существовать к моменту получения данного сообщения клиентом, то лучше использовать ответ с кодом 202. Появился в HTTP/1.0.
202 Accepted (Принято) — Запрос был принят на обработку, но она не завершена. Клиенту не обязательно дожидаться окончательной передачи сообщения, так как может быть начат очень долгий процесс. Появился в HTTP/1.0.
203 Non-Authoritative Information (Информация не авторитетна) — Аналогично ответу 200, но в этом случае передаваемая информация была взята не из первичного источника (резервной копии, другого сервера и т. д.) и поэтому может быть неактуальной. Появился в HTTP/1.1.
204 No Content (Нет содержимого) — Сервер успешно обработал запрос, но в ответе были переданы только заголовки без тела сообщения. Клиент не должен обновлять содержимое документа, но может применить к нему полученные метаданные. Появился в HTTP/1.0.
205 Reset Content (Сбросить содержимое) — Сервер обязывает клиента сбросить введённые пользователем данные. Тела сообщения сервер при этом не передаёт и документ обновлять не обязательно. Появился в HTTP/1.1.
206 Partial Content (Частичное содержимое) — Сервер удачно выполнил частичный GET-запрос, возвратив только часть сообщения. В заголовке Content-Range сервер указывает байтовые диапазоны содержимого. Особое внимание при работе с подобными ответами следует уделить кэшированию. Появился в HTTP/1.1.
207 Multi-Status (Многостатусный) — Сервер передаёт результаты выполнения сразу нескольких независимых операций. Они помещаются в само тело сообщения в виде XML-документа с объектом multistatus. Не рекомендуется размещать в этом объекте статусы из серии 1xx из-за бессмысленности и избыточности. Появился в WebDAV.
226 IM Used (Использовано IM) — Заголовок A-IM от клиента был успешно принят и сервер возвращает содержимое с учётом указанных параметров. Введено в RFC 3229 для дополнения протокола HTTP поддержкой дельта-кодирования.
3xx: Redirection (Перенаправление)
Коды класса 3xx сообщают клиенту, что для успешного выполнения операции необходимо сделать другой запрос (как правило по другому URI). Из данного класса пять кодов 301, 302, 303, 305 и 307 относятся непосредственно к перенаправлениям (жарг. редирект). Адрес, по которому клиенту следует произвести запрос, сервер указывает в заголовке Location. При этом допускается использование фрагментов в целевом URI.
По последним стандартам клиент может производить перенаправление автоматически (без запроса пользователя) только если второй ресурс будет запрашиваться методом GET или HEAD. В предыдущих спецификациях говорилось что для избежания круговых переходов пользователя следует спрашивать после 5-го подряд перенаправления. При всех перенаправлениях если метод был не HEAD, то в тело ответа следует включить короткое гипертекстовое сообщение с целевым адресом чтобы в случае чего пользователь смог сам произвести переход.
Разработчики HTTP отмечают что многие клиенты при перенаправлениях с кодами 301 и 302 ошибочно применяют метод GET ко второму ресурсу несмотря на то, что к первому запрос был с иным методом. Чтобы избежать недоразумений в версии HTTP/1.1 были введены коды 303 и 307 вместо 302. Изменять метод нужно только если сервер ответил 303. В остальных случаях следующий запрос производить с исходным методом.
300 Multiple Choices (Несколько вариантов выбора) — По указанному URI существует несколько вариантов предоставления ресурса по типу MIME, по языку или по другим характеристикам. Сервер передаёт с сообщением список альтернатив, давая возможность сделать выбор клиенту автоматически или пользователю. Появился в HTTP/1.0.
301 Moved Permanently (Перемещено навсегда) — Запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка. Некоторые клиенты некорректно ведут себя при обработке данного кода. Появился в HTTP/1.0.
302 Moved Temporarily / Found (Перемещено временно / Найдено) — Запрошенный документ временно доступен по другому URI, указанному в заголовке в поле Location. Этот код может быть использован, например, при управляемом сервером согласовании содержимого. Некоторые клиенты некорректно ведут себя при обработке данного кода. Введено в HTTP/1.0.
303 See Other (Смотреть другое) — Документ по запрошенному URI нужно запросить по адресу в поле Location заголовка с использованием метода GET несмотря даже на то, что первый запрашивался иным методом. Этот код был введён вместе с 307-ым для избежания неоднозначности, чтобы сервер был уверен, что следующий ресурс будет запрошен методом GET. Например, на веб-странице есть поле ввода текста для быстрого перехода и поиска. После ввода данных браузер делает запрос методом POST, включая в тело сообщения введённый текст. Если обнаружен документ с введённым названием, то сервер отвечает кодом 303, указав в заголовке Location его постоянный адрес. Тогда браузер гарантировано его запросит методом GET для получения содержимого. В противном случае сервер просто вернёт клиенту страницу с результатами поиска. Введено в HTTP/1.1.
304 Not Modified (Не изменялось) — Сервер возвращает такой код, если клиент запросил документ методом GET, использовал заголовок If-Modified-Since или If-None-Match и документ не изменился с указанного момента. При этом сообщение сервера не должно содержать тела. Появился в HTTP/1.0. Проверить код 304 Not Modified.
305 Use Proxy (Использовать прокси) — Запрос к запрашиваемому ресурсу должен осуществляться через прокси-сервер, URI которого указан в поле Location заголовка. Данный код ответа могут использовать только исходные HTTP-сервера (не прокси). Введено в HTTP/1.1.
306 (Зарезервировано, код использовался только в ранних спецификациях) — Использовавшийся раньше код ответа, в настоящий момент зарезервирован. Упомянут в RFC 2616 (обновление HTTP/1.1).
307 Temporary Redirect (Временное перенаправление) —- Запрашиваемый ресурс на короткое время доступен по другому URI, указанный в поле Location заголовка. Этот код был введён вместе с 303 вместо 302-го для избежания неоднозначности. Введено в RFC 2616 (обновление HTTP/1.1).
4xx: Client Error (Ошибка клиента)
Класс кодов 4xx предназначен для указания ошибок со стороны клиента. При использовании всех методов, кроме HEAD, сервер должен вернуть в теле сообщения гипертекстовое пояснение для пользователя.
400 Bad Request (Плохой запрос) — Сервер обнаружил в запросе клиента синтаксическую ошибку. Появился в HTTP/1.0.
401 Unauthorized (Неавторизован) — Для доступа к запрашиваемому ресурсу требуется аутентификация. В заголовке ответ должен содержать поле WWW-Authenticate с перечнем условий аутентификации. Клиент может повторить запрос, включив в заголовок сообщения поле Authorization с требуемыми для аутентификации данными.
402 Payment Required (Необходима оплата) — Предполагается использовать в будущем. В настоящий момент не используется. Этот код предусмотрен для платных пользовательских сервисов, а не для хостинговых компаний. Имеется в виду, что эта ошибка не будет выдана хостинговым провайдером в случае просроченной оплаты его услуг. Зарезервирован, начиная с HTTP/1.1.
403 Forbidden (Запрещено) — Сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу. Если для доступа к ресурсу требуется аутентификация средствами HTTP, то сервер вернёт ответ 401 или 407 при использовании прокси. В противном случае ограничения были заданы администратором сервера или разработчиком веб-приложения и могут быть любыми в зависимости от возможностей используемого программного обеспечения. В любом случае клиенту следует сообщить причины отказа в обработке запроса. Наиболее вероятными причинами ограничения может послужить попытка доступа к системным ресурсам веб-сервера (например, файлам .htaccess или .htpasswd) или к файлам, доступ к которым был закрыт с помощью конфигурационных файлов, требование аутентификации не средствами HTTP, например, для доступа к системе управления содержимым или разделу для зарегистрированных пользователей либо сервер не удовлетворён IP-адресом клиента, например, при блокировках. Появился в HTTP/1.0.
404 Not Found (Не найдено) — Самая распространенная ошибка при пользовании Интернетом, основная причина — ошибка в написании адреса Web-страницы. Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URI. Если серверу известно, что по этому адресу был документ, то ему желательно использовать код 410. Ответ 404 может использоваться вместо 403, если требуется тщательно скрыть от посторонних глаз определённые ресурсы. Появился в HTTP/1.0.
405 Method Not Allowed (Метод не поддерживается) — Указанный клиентом метод нельзя применить к текущему ресурсу. В ответе сервер должен указать доступные методы в заголовке Allow, разделив их запятой. Эту ошибку сервер должен возвращать, если метод ему известен, но он не применим именно к указанному в запросе ресурсу, если же указанный метод не применим на всём сервере, то клиенту нужно вернуть код 501 (Not Implemented). Появился в HTTP/1.1.
406 Not Acceptable (Неприемлемо) — Запрошенный URI не может удовлетворить переданным в заголовке характеристикам. Если метод был не HEAD, то сервер должен вернуть список допустимых характеристик для данного ресурса. Появился в HTTP/1.1.
407 Proxy Authentication Required (Необходима прокси авторизация) — Ответ аналогичен коду 401 за исключением того, что аутентификация производится для прокси-сервера. Механизм аналогичен идентификации на исходном сервере. Появился в HTTP/1.1.
408 Request Timeout (Истекло время ожидания) — Время ожидания сервером передачи от клиента истекло. Клиент может повторить аналогичный предыдущему запрос в любое время. Например, такая ситуация может возникнуть при загрузке на сервер объёмного файла методом POST или PUT. В какой-то момент передачи источник данных перестал отвечать, например, из-за повреждения компакт-диска или потери связи с другим компьютером в локальной сети. Пока клиент ничего не передаёт, ожидая от него ответа, соединение с сервером держится. Через некоторое время сервер может закрыть соединение со своей стороны, чтобы дать возможность другим клиентам сделать запрос. Этот ответ не возвращается, когда клиент принудительно остановил передачу по команде пользователя или соединение прервалось по каким-то иным причинам, так как ответ уже послать невозможно. Появился в HTTP/1.1.
409 Conflict (Конфликт) — Запрос не может быть выполнен из-за конфликтного обращения к ресурсу. Такое возможно, например, когда два клиента пытаются изменить ресурс с помощью метода PUT.Появился в HTTP/1.1.
410 Gone (Удалён) — Такой ответ сервер посылает, если ресурс раньше был по указанному URL, но был удалён и теперь недоступен. Серверу в этом случае неизвестно и местоположение альтернативного документа, например, копии). Если у сервера есть подозрение, что документ в ближайшее время может быть восстановлен, то лучше клиенту передать код 404. Появился в HTTP/1.1.
411 Length Required (Необходима длина) — Для указанного ресурса клиент должен указать Content-Length в заголовке запроса. Без указания этого поля не стоит делать повторную попытку запроса к серверу по данному URI. Такой ответ естественен для запросов типа POST и PUT. Например, если по указанному URI производится загрузка файлов, а на сервере стоит ограничение на их объём. Тогда разумней будет проверить в самом начале заголовок Content-Length и сразу отказать в загрузке, чем провоцировать бессмысленную нагрузку, разрывая соединение, когда клиент действительно пришлёт слишком объёмное сообщение. Появился в HTTP/1.1.
412 Precondition Failed (Условие ложно) — Возвращается, если ни одно из условных полей заголовка запроса не было выполнено. Появился в HTTP/1.1.
413 Request Entity Too Large (Размер запроса слишком велик) — Возвращается в случае, если сервер отказывается обработать запрос по причине слишком большого размера тела запроса. Сервер может закрыть соединение, чтобы прекратить дальнейшую передачу запроса. Если проблема временная, то рекомендуется в ответ сервера включить заголовок Retry-After с указанием времени, по истечении которого можно повторить аналогичный запрос. Появился в HTTP/1.1.
414 Request-URI Too Large (Запрашиваемый URI слишком длинный) — Сервер не может обработать запрос из-за слишком длинного указанного URL. Такую ошибку можно спровоцировать, например, когда клиент пытается передать длинные параметры через метод GET, а не POST. Появился в HTTP/1.1.
415 Unsupported Media Type (Неподдерживаемый тип данных) — По каким-то причинам сервер отказывается работать с указанным типом данных при данном методе. Появился в HTTP/1.1.
416 Requested Range Not Satisfiable (Запрашиваемый диапазон не достижим) — в поле Range заголовка запроса был указан диапазон за пределами ресурса и отсутствует поле If-Range. Если клиент передал байтовый диапазон, то сервер может вернуть реальный размер в поле Content-Range заголовка. Данный ответ не следует использовать при передаче типа multipart/byteranges. Введено в RFC 2616 (обновление HTTP/1.1).
417 Expectation Failed (Ожидаемое неприемлемо) — По каким-то причинам сервер не может удовлетворить значению поля Expect заголовка запроса. Введено в RFC 2616 (обновление HTTP/1.1).
418 I’m a teapot (Я — чайник) — Этот код был введен в 1998 году как одна из традиционных первоапрельских шуток IETF в RFC 2324, Hyper Text Coffee Pot Control Protocol. Не ожидается, что данный код будет поддерживаться реальными серверами.
422 Unprocessable Entity (Необрабатываемый экземпляр) — Сервер успешно принял запрос, может работать с указанным видом данных, в теле запроса XML-документ имеет верный синтаксис, но имеется какая-то логическая ошибка, из-за которой невозможно произвести операцию над ресурсом. Введено в WebDAV.
423 Locked (Заблокировано) — Целевой ресурс из запроса заблокирован от применения к нему указанного метода. Введено в WebDAV.
424 Failed Dependency (Невыполненная зависимость) — Реализация текущего запроса может зависеть от успешности выполнения другой операции. Если она не выполнена и из-за этого нельзя выполнить текущий запрос, то сервер вернёт этот код. Введено в WebDAV.
425 Unordered Collection (Неупорядоченный набор) — используется в расширении WebDAV Advanced Collections Protocol. Посылается, если клиент указал номер элемента в неупорядоченном списке, или запросил несколько элементов в порядке, отличающемся от серверного.
426 Upgrade Required (Необходимо обновление) — Сервер указывает клиенту на необходимость обновить протокол. Заголовок ответа должен содержать правильно сформированные поля Upgrade и Connection. Введено в RFC 2817 для возможности перехода к TLS посредством HTTP.
428 Precondition Required (Необходимо предусловие) — Сервер указывает клиенту на необходимость использования в запросе заголовков условий, наподобие If-Match. Введено в черновике стандарта RFC 6585.
429 Too Many Requests (Слишком много запросов) — Клиент попытался отправить слишком много запросов за короткое время, что может указывать, например, на попытку DoS-атаки. Может сопровождаться заголовком Retry-After, указывающим, через какое время можно повторить запрос. Введено в черновике стандарта RFC 6585.
431 Request Header Fields Too Large (Поля заголовка запроса слишком большие) — Превышена допустимая длина заголовков. Сервер не обязан отвечать этим кодом, вместо этого он может просто сбросить соединение. Введено в черновике стандарта RFC 6585.
434 Requested host unavailable. (Запрашиваемый адрес недоступен) — Запрашиваемый адрес недоступен.
449 Retry With (Повторить с) — Возвращается сервером, если для обработки запроса от клиента поступило недостаточно информации. При этом в заголовок ответа помещается поле Ms-Echo-Request. Введено корпорацией Microsoft для WebDAV. В настоящий момент как минимум используется программой Microsoft Money.
451 Unavailable For Legal Reasons (Недоступно по юридическим причинам) — Доступ к ресурсу закрыт по юридическим причинам, например, по требованию органов государственной власти или по требованию правообладателя в случае нарушения авторских прав. Введено в черновике IETF за авторством Google, при этом код ошибки является отсылкой к роману Рэя Брэдбери «451 градус по Фаренгейту».
456 Unrecoverable Error (Некорректируемая ошибка) — Возвращается сервером, если обработка запроса вызывает некорректируемые сбои в таблицах баз данных. Введено корпорацией Microsoft для WebDAV.
499 Client Closed Request (Клиент закрыл соединение) — Используется Nginx, когда клиент закрывает соединение до получения ответа.
5xx: Server Error (Ошибка сервера)
Коды 5xx выделены под случаи неудачного выполнения операции по вине сервера. Для всех ситуаций, кроме использования метода HEAD, сервер должен включать в тело сообщения объяснение, которое клиент отобразит пользователю.
500 Internal Server Error (Внутренняя ошибка сервера) — Любая внутренняя ошибка сервера, которая не входит в рамки остальных ошибок класса. Появился в HTTP/1.0.
501 Not Implemented (Не реализовано) — Сервер не поддерживает возможностей, необходимых для обработки запроса. Типичный ответ для случаев, когда сервер не понимает указанный в запросе метод. Если же метод серверу известен, но он не применим к данному ресурсу, то нужно вернуть ответ 405. Появился в HTTP/1.0.
502 Bad Gateway (Плохой, ошибочный шлюз) — Сервер, выступая в роли шлюза или прокси-сервера, получил недействительное ответное сообщение от вышестоящего сервера. Появился в HTTP/1.0.
503 Service Unavailable (Сервис недоступен) — Сервер временно не имеет возможности обрабатывать запросы по техническим причинам (обслуживание, перегрузка и прочее). В поле Retry-After заголовка сервер может указать время, через которое клиенту рекомендуется повторить запрос. Хотя во время перегрузки очевидным кажется сразу разрывать соединение, эффективней может оказаться установка большого значения поля Retry-After для уменьшения частоты избыточных запросов. Появился в HTTP/1.0.
504 Gateway Timeout (Шлюз не отвечает) — Сервер в роли шлюза или прокси-сервера не дождался ответа от вышестоящего сервера для завершения текущего запроса. Появился в HTTP/1.1.
505 HTTP Version Not Supported (Версия HTTP не поддерживается) — Сервер не поддерживает или отказывается поддерживать указанную в запросе версию протокола HTTP. Появился в HTTP/1.1.
506 Variant Also Negotiates (Вариант тоже проводит согласование) — В результате ошибочной конфигурации выбранный вариант указывает сам на себя, из-за чего процесс связывания прерывается. Экспериментальное. Введено в RFC 2295 для дополнения протокола HTTP технологией Transparent Content Negotiation.
507 Insufficient Storage (Переполнение хранилища) — Не хватает места для выполнения текущего запроса. Проблема может быть временной. Введено в WebDAV.
508 Loop Detected (Обнаружено бесконечное перенаправление) — операция отменена, т.к. сервер обнаружил бесконечный цикл при обработке запроса без ограничения глубины. Введено в WebDAV.
509 Bandwidth Limit Exceeded (Исчерпана пропускная ширина канала) — Используется при превышении веб-площадкой отведённого ей ограничения на потребление трафика. В данном случае владельцу площадки следует обратиться к своему хостинг-провайдеру. В настоящий момент данный код не описан ни в одном RFC и используется только модулем «bw/limited», входящим в панель управления хостингом cPanel, где и был введён.
510 Not Extended (Нет расширения) — На сервере отсутствует расширение, которое желает использовать клиент. Сервер может дополнительно передать информацию о доступных ему расширениях. Введено в RFC 2774 для дополнения протокола HTTP поддержкой расширений.
511 Network Authentication Required (Требуется сетевая аутентификация) — Этот ответ посылается не сервером, которому был предназначен запрос, а сервером-посредником — например, сервером провайдера — в случае, если клиент должен сначала авторизоваться в сети, например, ввести пароль для платной точки доступа к Интернету. Предполагается, что в теле ответа будет возвращена Web-форма авторизации или перенаправление на неё. Введено в черновике стандарта RFC 6585.
Прежде чем загрузить содержимое страницы, робот поисковой системы (или браузер пользователя) сначала делает специальный запрос, на который сервер отвечает в виде трехзначного кода. Разбираемся, какие эти коды бывают и как их проверить — вручную и с помощью сторонних сервисов.
Что такое код сервера
Код сервера (его еще называют кодом состояния HTTP) — последовательность из трех чисел с небольшим текстовым пояснением, который запрашивают и проверяют браузеры и поисковые роботы. Вот пример как это выглядит:

В этом случае код — число 404. Оно означает, что запрашиваемая страница не существует. Под числом небольшое текстовое сообщение: «вы выглядите потерянным, вот вам несколько других страниц». Под сообщением — альтернатива: ссылки на существующие страницы.
Читайте также: 11 способов проверки битых ссылок на сайте
Какие бывают коды ответов
Классы состояния — это группы кодов, которые объединяются общими признаками. Всего есть пять классов: принадлежность определяется первой цифрой из трех.
Класс 1. Выглядит так: 1ХХ. Это временные информационные коды. Они сообщают о том, что запрос принят и находится в обработке.
Класс 2. Выглядит так: 2ХХ. Сообщает об успешной обработке запроса.
Класс 3. Выглядит так: 3ХХ. Сообщает о перенаправлении с одного адреса на другой. Эти коды говорят об изменении URL. Используются при создании зеркал или переносе сайта на новый движок.
Класс 4. Выглядит так: 4ХХ. Говорит об ошибке со стороны посетителя. Обычно после числа идет небольшой текст с объяснением — в чем проблема. Такие коды говорят о запрете просмотра страницы или об ее отсутствии.
Класс 5. Выглядит так: 5ХХ. Сообщает об ошибке со стороны сервера. После этого класса тоже следует текстовое сообщение с объяснением причины поломки.
Теперь разберем более распространенные виды ответов в каждом классе.
Класс 1
100 Continue. Промежуточный ответ сервера. Говорит о том, что сервер принял запрос и начинает обработку.
101 Switching Protocols. Код ответа указывает протокол, который переключает сервер, используя запрос Upgrade. В ответ сервер отправляет заголовок ответа Upgrade с указанием протокола, на который переключился.
102 Processing. Это значит, что сервер получил запрос и обрабатывает его. Клиент не должен разрывать соединение, чтобы дождаться ответа от сервера. Этот код используется в протоколе WebDAV (измененный HTTP для работы с файлами).
Класс 2
200 Ok. Говорит об успешной обработке запроса. Например, запрошенные страница или данные найдены и готовы к просмотру. Всем страницам, которые участвуют в индексировании, присваивается код 200.
202 Accepted. Запрос принят и будет обрабатываться долго. Пользователь может не дожидаться окончания запроса. Используется, когда запрос обрабатывается другим сервером. Такой код используется сервером, чтобы выполнять несколько запросов одновременно: пока пользователь с кодом 202 ждет окончания операции, 200 уже «видит» страницу.
203 Non-Authoritative Information. Код означает, что обработка запроса прошла успешно. Но информация поступила не от сервера, а от другого источника: облака, резервной копии.
204 No Content. Такой код используется на портал для запуска скриптов. Например, когда пользователь кликает по свободному месту на сайте.
205 Reset Content. Говорит о том, что браузеру нужно очистить форму, в которую вписаны данные. Такой код используется, чтобы очистить поля, заполненные при регистрации. При это обновлять ресурс не нужно.
Класс 3
300 Multiple Choices. Говорит о том, что указанный URL обозначает больше, чем один ресурс. Например, страницу, переведенную на несколько языков.
301 Moved Permanently. Ответ означает, что запрошенный URL изменен или больше не существует, а пользователю предлагается перейти по новой ссылке.
Обычно с таким ответом срабатывает автоматический редирект на новую страницу. Код 301 уместно прописывать в следующих ситуациях: когда сайт переезжает на новый домен, при склеивании зеркала с оригинальным сайтом, при изменении ссылок страниц, для маскировки партнерских ссылок. Не нужно прописывать код, если в скором времени сайт вернется на прежний URL.
302 Found. Запрошенный URL перенесен на новый адрес. Такой код используется, когда адрес страницы изменился, но контент индексируется по старой ссылке. Например, 302 используют, чтобы было несколько версий главной страницы на разных языках. Также код говорит о том, что в будущем сайт будет доступен по старому адресу.
303 See Other. Указывает, что происходит перенаправление на другую страницу. Чтобы новая страница индексировалась, она должна отвечать на код 200. Такой код используется для страниц с подтверждением. Например, когда сайт высылает код подтверждения регистрации.
304 Not Modified. Это значит, что предыдущая версия страницы не изменена. Благодаря этому робот индексирует ее без загрузки. Из-за этого сервер меньше нагружается и повышается время безотказной работы. А пользователь работает с версией страницы, которая сохранена в памяти браузера.
У пользователей часто возникает ошибка HTTP 304. Такое бывает, если компьютер заражен вирусами или Windows медленно работает. Чтобы решить проблему, нужно проверить ПК на вирусы и очистить от лишних файлов. Еще можно восстановить записи в реестре системы. Но такую процедуру лучше доверить мастерам сервисного центра: если делать самостоятельно, можно превратить ПК в «кирпич».
305 Use Proxy. Сайт будет доступен только при использовании прокси-сервера. При этом нужно использовать сервер, который указан в разделе Location. Такой код предназначен для защиты сайта.
308 Permanent Redirect. Полностью повторяет запрос 301. Разница в методе выполняемого запроса.
Класс 4
400 Bad Request. Сервер не может понять запрос, потому что он введен с ошибкой. Под ошибкой обычно понимается синтаксическая: некорректно введен URL. Также код 400 появляется, когда пользователь пытается загрузить на сайт слишком большой файл. Решить проблему помогает смена запроса или очистка cookies. Чтобы очистить куки в браузере, нужно перейти в настройки, в раздел конфиденциальности и безопасности.
401 Unauthorized. У клиента не получается зайти на страницу сайта, потому что у него не хватает прав доступа. Такая ошибка возникает на сайтах, где есть форма для авторизации. Решить ошибку можно двумя способами: войти в систему с использованием логина и пароля или очистить кэш браузера.
403 Forbidden. Этот код говорит о запрете на просмотр страницы. Такое бывает, если для IP-адреса внесен запрет на уровне сервера. Решить проблему можно с помощью VPN или прокси.
Что такое прокси? Как выбрать качественный прокси-сервер? Прокси для SEO, парсинга, арбитража и пр.
404 Not Found. Код означает, что запрашиваемая страница (сайт или документ) не существует или расположена по другому адресу.
Ошибка 404 влияет на SEO-оптимизацию: если страница не существует / не доступна, поисковые роботы не будут ее индексировать и показывать в поиске. А еще переходы по битым ссылкам ухудшают поведенческие факторы. Но нивелировать негатив поможет грамотное оформление 404-страницы. Можно сделать ее с юмором, перенаправить трафик на другие ресурсы.
405 Method Not Allowed. Соответствующий код появляется, если на этапе обработки запроса сервер получает запрет. Такое случается, если нарушается работа php-скриптов. Ошибку можно решить с помощью перезагрузки страницы. Также помогает проверить все скрипты и удалить дополнения в CMS.
408 Request Timeout. Это значит, что сервер прервал соединение. Такое бывает, когда сервер не получает запросов от посетителей долгое время. Если пользователь сам прекращает соединение, ошибки не возникает.
409 Conflict.Означает конфликт между пользовательским запросом и сервером. Например, клиент хочет скачать с сайта файл «фото01». Но раньше файл назывался «фото1» и это название сохранилось в кеше. Из-за этого сервер не понимает, что хочет скачать пользователь — возникает конфликт.
410 Gone. Это значит, что документ удален с сервера навсегда. Если поисковый робот получит этот код, он больше не будет просматривать страницу.
413 Request Entity Too Large. Ошибка возникает, если пользователь пытается загрузить слишком большой файл на сайт. Стандартно допустимый размер загружаемого файла — 1 Мб. Если клиент пытается загрузить больше — возникает ошибка. Чтобы решить проблему, нужно увеличить размер максимально загружаемого файла. Для этого нужно вносить изменения в настройки Nginx, php и apache. (Есть видео, как это делать в CMS WordPress.)
414 Request-URL Too Long. Если пользователь пытается сделать запрос с длинным URL, возникает такая ошибка.
423 Locked. Такая ошибка возникает, если IP-адрес блокируется хостером. Блокировку можно получить за сильную активность, интернет-мошенничество или вирусы.
451 Unavailable For Legal Reasons. Новая ошибка, которая набирает популярность. Она появляется на сайтах, которые заблокированы государством. Ошибка 451 — дополнение к 403.
Класс 5
500 Internal Server Error. Ошибка из-за сбоев на сервере. Возникает при неправильной конфигурации файла .htaccess. Чтобы решить проблему, нужно изменить директиву Options: поставить в начале строки #.
502 Bad Gateway. Возникает, если есть промежуточный сервер. Случается, когда промежуточный сервер получает запрос и запрашивает данные у «главного» сервера, и получает неправильный ответ. В решении ошибки помогает очистка кеша браузера, обновление страницы и очистка DNS-кеша.
503 Service Unavailable. У сервера не получается обрабатывать запросы по техническим причинам. Например, если на сервере ведутся какие-то работы.
504 Gateway Timeout. Шлюз не дает ответа. Появляется, если ответ от главного сервера не получен.
507 Insufficient Storage. Ошибка высвечивается, если у сервера нет места работы с операцией. Проблему можно решить перезагрузкой. Или просто подождать.
511 Network Authentication Required. Значит, что нужно пройти авторизацию для доступа к интернету. Такой ответ высылает посредник, например, провайдер. Чтобы решить проблему, нужно написать в поддержку провайдера.
О популярных и важных ошибках поговорили. Теперь разберемся, как проверить код сервера. Это можно сделать самостоятельно или с помощью сторонних программ.
Как проверить код сервера
Начнем с ручного способа. Для этого перейдите на сайт через браузер Chrome и откройте консоль клавишей «F12». (Или «Fn + F12» на ноутбуках. Также инструменты разработчика можно включить сочетанием клавиш «Ctrl + Shift + I».) Теперь перейдите во вкладку «Network» и нажмите «Ctrl + R».

Чтобы узнать код страницы, нужно смотреть столбец «Status».

Теперь о проверках с помощью сторонних сайтов и плагинов.
Bertal
Bertal — сервис для просмотра http-заголовков, веб-файлов (.html, .php, .asp, .gif, .jpg, .css и др.). Также позволяет просматривать html-код страниц. Работает с протоколами HTTP, HTTPS, FTP.
Возможности:
- Запрос информации методами HEAD, GET, POST. Метод HEAD — если запрашивается заголовок. GET — если запрашивается заголовок и тело. POST — как и GET, но с заполненной строкой POST.
- Поддерживаемые поисковые роботы: YandexBot, GoogleBot, BingBot, Yahoo, Baiduspider.
- Поддерживаемые браузеры: Mozilla Firefox, Google Chrome, Internet Explorer, Opera, Opera mini.
- Работает с Proxy.
- Можно указывать содержимое Cookies.

Стоимость. Бесплатно.
PR-CY
PR-CY — cервис для SEO-аудита сайта, мониторинга и проверки позиций в поисковой выдачи. Подходит для анализа кодов ответа сервера, метатегов, содержимого страниц. Есть функции мониторинга сайта, проверки индексирования.
Возможности:
- Проверка кодов ответа страниц. Сервис проверяет все элементы: текст, скрипты, видео, фотографии. После PR-CY дает рекомендации: сжать текст, сократить HTML, CSS или JS.
- Работает с видами запросов: GET, POST, HEAD.
- Глубокий анализ: проверка редиректов, поиск всех кодов.
- Работает с поисковыми системами Google и Yandex.
- Проверка контента: пустые заголовки, лишние скрипты, нерабочие внешние ссылки.
Еще у PR-CY есть много чего: проверка скорости загрузки, вирусов, срока действия SSL-сертификата и др.

Стоимость. Есть бесплатный тариф для экспресс-анализа сайта. Для полного аудита нужно покупать подписку. Она стартует от 990 ₽ в месяц. Позволяет вести до 5 проектов и проверять 1 000 страниц. Дорогие тарифы отличаются тем, что можно вести больше проектов и проверять больше страниц.
Читайте также: Как оптимизировать изображения для сайта
Checkmy
Checkmy — помогает проверить коды и заголовки ответа сервера. А еще доступность URL адресов, кеширование страниц, сжатие контента, исходный код, тип сервера и корректность переадресаций.
Возможности:
- Работает с доменам на кириллице.
- Работает через мобильную версию.
- Проверяет страницы с несколькими редиректами.
- Показывает размер и скорость загрузки страницы.
- Проверяет контент на сжатие.

Стоимость. Бесплатно.
Sitechecker
Sitechecker подходит для мониторинга сайта и полного аудита.
Возможности:
- Проверка состояния страницы и кодов ответа.
- Подсчет «веса» HTML-кода страницы. Если он больше 2 Мб, сервис подскажет, как его уменьшить.
- Отдельная проверка страницы с кодом 404.
- Проверка индексации поисковыми системами.
- SEO-анализ страницы: проверка title, description, заголовков h1-h6. Проверка изображений и атрибутов Alt, внутренних и внешних ссылок.
- SEO-аудит сайта: оценка битых ссылок и редиректов, метатегов, скорости загрузки.
- Мониторинг ресурса: контроль статуса индексирования, защита от взломов и отслеживание сайтов конкурентов.

Стоимость. Можно сделать проверку кодов бесплатно. Но функции мониторинга, проверки обратных ссылок и индексации будут недоступны. Платная подписка стартует от 29 $ в месяц. Для подписки доступно 3 тарифа. Они отличаются количеством сайтов, которые можно проверять.
А еще за парсингом метатегов и заголовков, анализом индексации страниц, съемом позиций в поисковиках, сбором семантического ядра можно обратиться в Promopult. Это мощная платформа для комплексного продвижения в интернете: поисковой оптимизации, контекстной и таргетированной рекламы, управления репутацией.
Яндекс.Вебмастер
Яндекс.Вебмастер поможет узнать, доступны ли страницы для поисковых роботов Яндекса. (Но ответ, полученный через Яндекс.Вебмастер, может отличаться от того, который получит поисковый робот. Дело в том, что инструмент работает через другой IP-адрес. Об этом сказано в Яндекс.Справке.)
Возможности:
- Проверка всех классов ответа сервера.
- Дополнительно можно узнать срок действия SSL-сертификата.
- Проверяет страницы размером до 10 Мб.
- Работает с файлами этих типов: PDF, DOC/DOCX, XLS/XLSX, PPT/PPTX, ODS, ODP, ODT, ODG, RTF, TXT и SWF.

Стоимость. Бесплатно.
Converseo
Converseo подходит для как для проверки одиночного URL, так и для массового отслеживания.
Возможности:
- Работа с методами GET, POST, HEAD.
- Есть дополнительные функции: сравнение списков, загрузка фото из Instagram.
- Готовый отчет можно скачать в формате CSV.


Стоимость. Бесплатно.
Coolakov
Coolakov — работает также, как и Converseo. Есть и дополнительные функции.
Возможности:
- Массовая проверка URL. Особенность в том, что выдается конечный ответ сервера. Например, если был редирект на рабочую страницу — ответ будет 200. Если на сломанную — в зависимости от ошибки.
- Поддерживаемые браузеры: Mozilla Firefox, Google Chrome, Safari.
- Проверка доступности сайта.
- Измерение скорости загрузки портала.
- Проверка индекса качества сайта.
- Проверка орфографии.

Стоимость. Бесплатно.
Headmasterseo
Headmasterseo. Программа для Windows и Mac, которая проверяет массовые URL. Отслеживает коды состояния, редиректы, время ответа и заголовки ответов.
Возможности:
- Проверка URL с помощью метода HEAD.
- Одновременная проверка 500 ссылок.
- Проверка циклов перенаправления. Есть тестер, который оценит, правильно ли настроен редирект.
- Работает с прокси.
- Готовый отчет можно экспортировать в формате CSV.
- Проверка полей заголовков.
- Проверка Sitemap файлов в формате XML.

Стоимость. До 500 URL можно проверять бесплатно. Чтобы проверить больше, нужно платить. За 10 000 URL придется заплатить 50 $. За 100 000 — 100 $. Неограниченное количество ссылок можно проверять за 150 $.
Читайте также: Исчерпывающий гид по поисковым операторам Google и Яндекса
Плагины
Redirect Path Link. Это бесплатный плагин для Google Chrome. Он поможет провести SEO-аудит сайта и проверить HTTP-заголовки. Работает только с 3 классом кодов сервера.
Robots Exclusion Checker. Помогает оптимизировать сайт, найти проблемы в индексации и сделать SEO-аудит. Плагин бесплатный. Работает со всеми классами кодов и поисковыми роботами Googlebot, Bing, Yahoo.
SEO META in 1 CLICK. Бесплатный плагин для Google Chrome. Помогает проверить коды ответа сервера, проанализировать заголовки H1-H6, проверить изображения и Alt атрибуты к ним и др.
Website SEO Checker: Free Audit & Analysis. Бесплатный плагин от Sitecheker. В нем есть такие же функции, как и на сайте: аудит, мониторинг, анализ, просмотр кодов ответа и т.д.
Коротко о главном
Код ответа сервера — это трехзначное число с небольшим текстовым сопровождением. Коды делят на 5 классов:
- 1ХХ — информационные.
- 2ХХ — успешные.
- 3ХХ — переадресация
- 4ХХ — проблемы со стороны пользователя.
- 5ХХ — проблемы со стороны сервера.
Это важный элемент поисковой оптимизации. Они влияют на индексирование страницы поисковыми роботами, помогают настроить эффективную переадресацию.
Чтобы сайт хорошо продвигался в поисковых системах, стоит регулярно отслеживать коды ответа. Это можно делать самостоятельно или с помощью сторонних сервисов. Большая часть из них бесплатная.
А чтобы глубже разобраться в SEO, приходите учиться в CyberMarketing. У нас есть статьи, вебинары, базовые и продвинутые курсы по поисковому продвижению. Преподают эксперты Promopult: Руслан Байбеков и Евгений Костин.
Серия постов о том, как проверить сайт на ошибки самостоятельно. Обновленный материал с советами о проверке технических параметров.
В статье:
- Проблемы с хостингом и сервером
- Работа CMS, модулей и виджетов
- Наличие дубликатов сайта
- Склейка доменов с www и без
- Ошибки в разметке HTML и CSS
- Корректность кодировки
- Страница 404 Not Found и битые ссылки
- Работоспособность ссылок
- Мобилопригодность и кроссбраузерность
- Скорость загрузки страниц
Технический аудит выявляет программные и технические неполадки на сайте. От них зависит функционирование ресурса, его продвижение в поисковиках и удовлетворенность пользователей. Рассмотрим основные моменты.
Макаке не нравится, как работает сайт
Проблемы с хостингом и сервером
Из-за проблем с сервером страницы сайта могут очень медленно загружаться или вовсе быть недоступны, тогда пользователь увидит ошибку с кодом 500 в браузере. Сбои в работе сервера отображаются в логах ошибок, эту информацию можно узнать на сайте вашего хостера.
Большая часть информации находится в панели управления хостингом.
Проверьте: У вас должно быть настроено резервное копирование сайта на случай, если вам понадобится откатить изменения. Актуальная копия должна храниться в облаке, к которому у вас есть доступ. Если у вас мало опыта в теме, советуем привлечь программиста для экономии времени и уменьшения ошибок. Проверьте, как установлены, отображаются и работают модули и виджеты на вашем сайте. Чем меньше дополнительных объектов установлено, тем лучше — меньше ошибок и лазеек для взлома сайта. Вебинар с конспектом по теме — Все установленные элементы и сам движок должны быть актуальной версии. Если какой-то виджет больше не поддерживается, найдите альтернативу, это важно для безопасности сайта. Для проверки сайта на вирусы используйте бесплатный инструмент.
Работа CMS, модулей и виджетов
Как защитить сайт от взломов и атак
Наличие дубликатов сайта
У сайта не должно быть сайтов-дублей или копий отдельных страниц. Для оправданных дублей, например, страниц с одного и того же товара, есть rel canonical.
Проверьте доступ к другим версиям сайта и редиректы:
- сайт доступен по протоколу HTTPS, у него есть SSL-сертификат;
- настроен 301 редирект с версии сайта с www.site.com на основное зеркало без www — site.com (об этом подробнее в следующем пункте);
- настроен 301 редирект со страниц без слеша на конце на страницы со слешем — с https://pr-cy.ru/seo-guide/ на https://pr-cy.ru/seo-guide//;
- у дублей страниц, которые появляются оправданно, например, из-за параметров фильтрации в URL, прописан тег rel = «canonical».
Всем сессиям поискового бота присваивается идентификатор — параметр PHPSESSID. Когда бот посещает страницу, к URL добавляется этот параметр. В следующую сессию он будет новый, и если бот снова посетит страницу, у URL будет новый параметр. Все эти URL с разными параметрами как бы разные URL, хотя принадлежат одной странице. Это может навредить индексированию сайта. В адресе страниц не должно быть идентификаторов сессий.
Забейте в поисковик телефоны, указанные на вашем сайте, ИНН компании и другую регистрационную информацию. Это поможет быстро найти двойников: в выдаче с такой информацией должен быть ваш сайт и справочники.
Склейка доменов с www и без
Технически, домены с www и без www — это два разных ресурса, поисковые системы индексируют и ранжируют их отдельно, а ссылки будут иметь разный вес. Это может грозить:
- понижением в поисковой выдаче;
- фильтром, потому что поисковик может принять один сайт за дубликат другого;
- проблемами с авторизацией на сайте и другим функционалом, использующим cookie.
Проблема решается указанием поисковикам основного зеркала и 301 редиректом на него. Проверьте, сделана ли склейка.
Как указать основное зеркало для Яндекса:
- Откройте или создайте в корне вашего сайта файл robots.txt;
- Добавьте строку Host: site.com, где site.com — основное зеркало вашего сайта.
Обработка информации ботом Яндекса займет около 2-3 недель. Ускорить учет новых указаний можно в Яндекс.Вебмастере.
Директива Host должна содержать указание на протокол HTTPS, если зеркало доступно только по защищенному каналу (Host: https://site.com).
В файле robots.txt необходимо использовать только Punycode для кириллических доменов
Как указать основное зеркало для Google:
- Авторизуйтесь/зарегистрируйтесь в Google Search Console;
- Добавьте ваш сайт, подтвердите права, если не сделали это ранее;
- Нажмите на значок шестеренки и выберите «Настройки сайта»;
- Укажите нужный вариант в разделе «Основной домен».
Google обрабатывает информацию от суток до двух недель.
Как настроить 301 редирект
Важно! Приступайте к этому пункту только когда боты поисковых систем обработают информацию об основных зеркалах, иначе ваш сайт может полностью выпасть из поисковой выдачи.
- Откройте/создайте в корне вашего сайта файл .htaccess.
- Добавьте строки кода:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Подробнее о настройке:
Как настроить 301 редирект самостоятельно
Ошибки в разметке HTML и CSS
Код должен соответствовать стандарту W3C, иначе он считается невалидным и его могут не распознать какие-то браузеры и гаджеты. Ошибки в HTML и CSS приводят к неправильному отображению страниц сайта, они мешают рендерингу на мобильных устройствах, могут повлечь за собой потерю позиций в поисковой выдаче и санкции от поисковиков.
Ошибки могут появиться из-за установки сторонних плагинов, тем и других элементов. Самые распространенные ошибки в HTML и CSS:
- использовали не рекомендованный стандартом тег;
- в ссылки добавили лишние символы;
- не указали обязательный атрибут;
- не закрыли тег.
Для проверки HTML и CSS есть онлайн-сервисы HTML Validator и CSS Validator, они сканируют код и выдают подробный отчет на предмет ошибок. Отправить код для проверки можно по ссылке, можно загрузить из файла или скопировать и вставить в соответствующее поле.
Почитать по теме:
Проверка валидации кода: как найти ошибки в HTML и CSS
Корректность кодировки
Из-за некорректной кодировки контент сайта может отображаться неправильно. Если кодировки на сайте и на сервере не совпадают, вместо текста на страницах будет абракадабра. Помимо того, что посетителям это не понравится, сайт не проиндексируется или даже попадет под фильтр поисковиков.
Кодировка UTF-8 общепринята, она правильно отображает сайт и поддерживает кириллические символы. Кодировка указана в строке, содержащей слово charset внутри тега head.
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Для проверки используйте онлайн анализ сайта от PR-CY. Конкретные страницы со сбитой кодировкой вы найдете в модуле аудита внутренних страниц. Он покажет URL со всеми проблемами, вы сразу узнаете, что и где нужно исправить.
Почитать по теме:
Как настроить кодировку сайта самостоятельно
404 Not Found
Страница ошибки 404 отображается, когда посетитель сайта пытается попасть в несуществующую часть сайта. URL больше не ведет на искомую страницу, потому что ее переместили или удалили.
Почему пользователи попадают на страницу, которая больше недоступна по старому URL:
- страница осталась в индексе поисковика и пользователь получил на нее ссылку в выдаче;
- на сайте остались внутренние ссылки на страницу;
- на нее ссылаются сторонние ресурсы;
- опечатка в адресной строке браузера.
Сервер должен отдавать пользователю страницу 404, если тот пытается перейти по некорректному URL. При этом таких пользователей не обязательно терять. Если сделать страницу в общем дизайне и разместить на ней ссылки на другие разделы сайта, он может перейти к ним. О том, как оформить страницу 404 — ниже.
Если сайт отдает ответ 200 для страниц, которые больше недоступны, поисковые роботы ее обработают и добавят в индекс, так она может попасть в выдачу.
Что сделать для оптимизации страниц 404
1. Сделайте так, чтобы пользователи не попадали на несуществующую страницу
Проверьте сайт на «битые» ссылки — внутренние и внешние. Для этого можно использовать панели вебмастеров Яндекс и Google, бесплатную программу Xenu’s Link Sleuth или плагин для WordPress Broken Link Checker, если используется соответствующая CMS.
Дальше определите, что делать с каждой из «битых» ссылок:
- Если ошибку выдает сайт по внешней коммерческой ссылке, свяжитесь с рекламодателем и сообщите, что его сайт не работает.
- Если страницу по ссылке переместили, настройте 301 редирект на ее новый URL.
- Если страницу удалили, то удалите и ссылку на нее. Или заполните несуществующую страницу контентом.
После исправления ссылок необходимо удалить несуществующие страницы из индекса поисковых систем. Это делается средствами уже упомянутых панелей вебмастеров
Яндекс и Google.
Чтобы страница удалилась из индекса, сервер при обращении к ней должен возвращать ошибку 404. Если страница существует, но не должна участвовать в поисковой выдаче, закройте ее от индексации правилами robots.txt или мета-тегом
noindex. При следующем обходе сайта роботом он выполнит запросы на удаление, страницы исчезнут из результатов поиска.
Почитать по теме:
Чем вредят сайту битые ссылки? Способы их найти и исправить
2. Создайте оригинальную страницу 404 Not Found
Если пользователь попадет на несуществующую страницу, сервер покажет страницу 404 по умолчанию. В лучшем случае, это краткое пояснение, что пользователь не туда попал, и реклама вашего хостера, а может быть и просто «404 Not Found».
Скорее всего, пользователь покинет такую страницу. Оригинальная страница 404 поможет удержать его на сайте.
Какой сделать страницу 404:
- Оригинальная страница 404 должна соответствовать дизайну и идее вашего сайта. Пользователь должен понять, что попал именно на ваш сайт.
- Страница 404 не должна быть «тупиковой». Разместите на ней ссылки на основные разделы, поиск по сайту, ссылки на группы в соцсетях.
- Пользователь должен понять, почему он попал на несуществующую страницу. Добавьте небольшое текстовое пояснение, справочную информацию, живой чат с техподдержкой пользователей или форму обратной связи.
Смешные изображения, видеоролики, интересные интерактивные элементы помогают сгладить разочарование от попадания на страницу 404 и поднимают настроение. А это хорошо, если подъем настроения связан с вашим сайтом. 
Чтобы указать серверу, куда перенаправлять пользователей, если возникает ошибка 404, используют директиву ErrorDocument в файле .htaccess в корневой папке сайта:
ErrorDocument 404 http://site.com/404.html
Где
http://site.com/404.html — адрес вашей оригинальной страницы 404.
Таким же способом с помощью файла .htaccess вы можете обрабатывать и другие ошибки сервера:
- 401 ошибка (ErrorDocument 401 http://site.com/page.html) — требуется авторизация;
- 403 ошибка (ErrorDocument 403 http://site.com/page.html) — доступ запрещен;
- 500 ошибка (ErrorDocument 500 http://site.com/page.html) — внутренняя ошибка сервера.
Работоспособность ссылок
Поисковик воспринимает ссылками объекты, заключенные в тег с атрибутом href. Все остальное — не ссылки в понимании поисковика, хоть на сайтах и встречаются ссылки, сделанные с помощью Javascript — с тегами div и span. Например, это встречается в каталоге в системе фильтров, которые применяет пользователь. Если в тегах фильтра нет ссылок с a href, поисковик их не увидит и страницы каталога могут не попасть в выдачу.
В этом случае нужно добавить ссылки в виде статических элементов HTML с атрибутом href, чтобы поисковик мог перейти по ссылке, проанализировать контент и проиндексировать страницу.
Javascript не стоит использовать для ссылок в меню, это затруднит индексацию. Вы можете проверить, как поисковый бот индексирует ссылки с помощью сервисов типа Screaming Frog или Xenu’s Link Sleuth. Проведите индексирование сайта два раза с включенным и отключенным JavaScript и сравните, есть ли разделы или страницы, недоступные из-за меню в JavaScript.
Еще проверьте, настроены ли ЧПУ — человеко-понятные URL или Friendly URL. Они произносимые, не содержат посторонних символов, поэтому выглядят естественнее, проще запоминаются и не ассоциируются со спамом.
Пример структуры: главная / категория / раздел / подраздел / товар (услуга, статья, другая страница).
Какими должны быть ЧПУ в SEO:
- естественная формулировка с произносимыми словами;
- транслитерация или перевод слова;
- могут упоминаться ключи, но без переспама;
- длина до примерно 70-90 символов;
- только прописные, без заглавных букв;
- дефис в качестве разделителя.
ЧПУ легко настраиваются в админке сайта на популярных CMS.
Проверьте, работает ли ссылка на главную страницу на логотипе компании в шапке, чтобы пользователь мог в один клик вернутся на главную из любого раздела.
Проверьте, чтобы значки соцсетей отправляли на соответствующие страницы в соцсетях, принадлежащие компании. Не забудьте убрать из списка неактуальные и заблокированные в стране соцсети.
Мобилопригодность и кроссбраузерность
Быть удобным на мобильных — обязательное требование к сайтам от поисковиков. Google перешел на Mobile-first index, поэтому выстраивает выдачу, основываясь на мобильных версиях сайтов. Сайт должен корректно работать на всех устройствах, полностью помещаться в экран и не уступать десктопной версии по функциональности и оптимизированности.
Кроссбраузерность означает, что сайт корректно открывается во всех актуальных версиях браузеров.
О мобилопригодности сайта и отображении в браузерах нужно думать на стадии его разработки. Проверьте сайт:
- в robots.txt нет запрета для сканирования CSS и JavaScript и персонально для мобильного бота;
- макет умещается на смартфонах в область просмотра без горизонтальной прокрутки;
- кнопки работают корректно и достаточно крупные, чтобы попасть по ним пальцем;
- всплывающие объекты можно закрыть, крестик на видимой части экрана;
- элементы быстро загружаются;нет Flash-элементов, Java-апплетов и Silverlight-плагинов;
- текст достаточно крупный, чтобы читать с небольшого экрана;
- вся навигация помещается в экран;
- кнопка звонка или чата не мешает чтению контента;
- в компанию можно позвонить по клику на номер.
Проверить отображение сайта на мобильных также поможет сервис для аудита сайта онлайн: оценит сжатие элементов, миниатюру на дисплее, тег viewport, плагины, мобильную скорость и прочее.
Проверьте, нет ли скрытой переадресации для мобильных устройств, когда пользователь на смартфоне нажимает на сайт в выдаче, а попадает на другую страницу — с рекламой, например. Это может быть не безобидная реклама, а скам или фишинговая программа для кражи данных. Из-за этого можно потерять доверие пользователей, мобильный трафик, выпасть из поисковой выдачи и получить санкции от Яндекса и Google. Мы написали статью о причинах появления такого редиректа, способах его обнаружить, удалить и защитить сайт.
Фавикон
Фавикон — это маленькая иконка у сайта, видна в выдаче Яндекса, в мобильной выдаче Google, на браузерных вкладках и закладках. Иконка может обратить на себя внимание, помочь считать тематику сайта и запомниться, чтобы в следующий раз пользователь зашел на знакомый по фавикону сайт.
В руководстве по фавиконам мы описали, как сделать картинку и установить ее на сайт, какие параметры нужны, а также как установить разные иконки для разделов сайта.
Поисковые системы не сразу начнут отображать фавикон, может потребоваться довольно много времени. Вы можете проверить, как они видят вашу иконку. Введите в поисковую строку https://favicon.yandex.net/favicon/site.com для Яндекса и еще https://www.google.com/s2/favicons?domain=site.com для Google, вместо site.com напишите ваш домен.
Скорость загрузки страниц
Низкая скорость загрузки страниц не нравится ни пользователям, ни поисковикам. Оптимальная скорость загрузки сайта на десктопе — не более 3 секунд, на мобильных устройствах — около 5 секунд, хотя и это уже перебор.
Оценить скорость загрузки можно с помощью нашего сервиса. Он анализирует этапы загрузки страницы в соответствии с набором показателей Core Web Vitals, в который входит:
- Время, за которое браузер отрисовывает самый крупный видимый объект в области просмотра.
- Отзывчивость браузера на первое действие пользователя на странице.
- Визуальная стабильность — оценка сдвигов макета во время загрузки страницы.
У этих показателей есть пороговые значения. Если сайт очень медленный и не дотягивает, то Google может его пессимизировать. Если сайт преодолел порог — хорошо, но остальные микроулучшения роли не сыграют.
Интересное почитать:
Вообще всё о Core WebVitals и многое об ускорении сайта
Как увеличить скорость загрузки страницы:
1. Сократите размер кода CSS и JavaScript
Онлайн-сервисы для упрощения JavaScript и CSS удаляют из кода пробелы и комментарии, сокращая время его загрузки.
Советуем, к примеру, эти:
- Refresh-SF
- CSSResizer
- Minifycode
- Letteros
Больше инструментов и приемов оптимизации верхней части страницы.
Размещайте CSS-файлы в начале страницы, а JS-файлы — перед закрывающим тегом body. До момента отображения контента страницы браузер должен загрузить только стили, а скрипты — в последнюю очередь. Так пользователь быстрее увидит содержимое страницы. Если стили тоже перенести в низ страницы, то разметка после загрузки будет не стилизована, до момента загрузки стилей это будет выглядеть некрасиво.
2. Уменьшите объем загружаемых страниц
Используйте сжатие gzip, это сократит время передачи файлов браузеру.
В новых версиях Nginx gzip сжатие включено по умолчанию. Для включения сжатия gzip в Apache убедитесь, что подключен модуль mod_gzip. Далее добавьте в файл .htaccess следующие строки:
<ifmodule mod_gzip.c="">
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_include mime ^text/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_include handler ^cgi-script$
</ifmodule>
Проверить работоспособность и степень сжатия gzip вашего сайта можно с помощью сервиса
GIDZipTest.
Подробности по теме:
Как уменьшить вес сайта — минификация кода, разное сжатие, кэширование
3. Включите кэш данных
Настройте сервер так, чтобы браузер пользователя кэшировал данные. При первом посещении сайта изображения, CSS- и JS-файлы сохранятся автоматически. В следующий раз браузер не потратит время на их загрузку.
Для веб-сервера на Nginx используется модуль expires в файле конфигурации:
location ~* .(js|css|png|jpg|jpeg|gif)$ {
expires 86400s;
log_not_found off;
}
В строке
location ~* .(js|css|png|jpg|jpeg|gif)$ { перечисляются типы файлов, которые требуют кэширования. Допускается использование нескольких блоков для более гибкой настройки.
Строка
expires 86400s; указывает, сколько будет храниться кэш. Можно указывать значения:
- в секундах — s;
- часах — h;
- днях — d;
- месяцах — m;
- навсегда — max.
Либо можно указать дату в формате RFC 1123, когда кэшированный файл потеряет актуальность:
expires Fri, 24 Nov 2017 01:01:01 GMT;
Строка
log_not_found off; отключает ведение лога сообщений с 404 ошибкой для указанных типов файлов. Это помогает снизить нагрузку на сервер.
Настройка кэширования на серверах Apache происходит в файле конфигурации или в файле .htaccess. Поддерживается как модуль expires, так и альтернативный способ Cache-Control.
Expires:
<ifmodule mod_expires.c="">
ExpiresActive On
ExpiresDefault "access plus 2 month"
ExpiresByType image/gif "access plus 4 months"
ExpiresByType image/jpeg "access plus 4 months"
</ifmodule>
Строка
ExpiresActive On включает кэширование.
Строка
ExpiresDefault «access plus 2 month» устанавливает срок кэширования по умолчанию в 2 месяца.
Строки
ExpiresByType image/gif «access plus 4 months» и ExpiresByType image/jpeg «access plus 4 months» задают срок кэширования 4 месяца для GIF- и JPEG-файлов.
Поддерживаются значения в:
- Годах — years, year
- Месяцах — months, month
- Неделях — weeks, week
- Днях — days, day
- Часах — hours, hour
- Минутах — minutes, minute
- Секундах — seconds
Cache-Control:
<ifmodule mod_headers.c="">
<filesmatch ".(js|css)$"="">
Header set Cache-Control "max-age=604800"
</filesmatch>
<filesmatch ".(ico|gif|jpg|jpeg|png)$"="">
Header set Cache-Control "max-age=2628000"
</filesmatch>
<filesmatch ".(php|cgi)$"="">
Header unset Cache-Control
</filesmatch>
</ifmodule>
Этот код устанавливает время хранения JS- и CSS-файлов в кэше в 1 неделю, для файлов с расширением .ico, .gif, .jpg, .jpeg и .png — 1 месяц, а для .php и .cgi — запрещает кэширования.
Для Cache-Control время хранения файлов можно задать только в секундах. Самые популярные значения:
- Одна минута: max-age=60;
- Один час: max-age=3600;
- Один день: max-age=86400;
- Одна неделя: max-age=604800;
- Один месяц: max-age=2628000;
- Один год: max-age=31536000.
4. Оптимизируйте изображения
Оптимизируйте размер изображения под сайт. Не загружайте изображение на хостинг в разрешении 4000×3000, если отображаться оно будет в 800×600 без возможности увеличения по клику.
Бесплатные онлайн-сервисы для редактирования изображений:
- PicMonkey
- Pixlr
- BeFunky
- Больше сервисов для редактирования, цветокоррекции и скругления углов
Формат JPEG лучше всего подходит для фотографий. PNG лучше сжимает однотонные участки и градиенты, поддерживает прозрачность. Используйте его для иконок, иллюстраций и прочего.
Добейтесь баланса между сжатием и качеством изображения. Используйте максимально возможное сжатие, но следите, чтобы не было излишней размытости, пикселизации или артефактов.
Примеры с разной степенью сжатия JPEG:
|
JPEG Оригинал 95 Кб |
JPEG Сжатие 27 Кб |
![]() |
![]() |
Онлайн-сервисы для сжатия изображений:
- CompressJPEG;
- TinyPNG;
- Pngquant.
Укажите ширину и высоту всех изображений. Браузер отображает страницу еще до загрузки изображений, если известны размеры места, которое зарезервировано для них. Укажите эти размеры, чтобы ускорить загрузку страницы и сделать ее удобной для пользователей.
Огромное руководство по оптимизации картинок: как уменьшить размер картинки и сохранить качество, как настроить адаптивность изображений, как заполнить SEO-атрибуты и другое
С осторожностью используйте изображения для оформления сайта. Везде, где это возможно, вместо изображений пользуйтесь CSS для создания фона.
5. Избавьтесь от лишних редиректов
Везде, где возможно, избавьтесь от редиректов, чтобы посетители сайта сразу направлялись на нужную страницу. Редирект увеличивает время загрузки страницы, а поисковые системы могут расценить множественные перенаправления как проблемы на сайте.
Использование редиректа оправдано в случаях, если адреса страниц меняются по техническим причинам, для склейки доменов с www и без www и для перенаправления на мобильную версию сайта.
Почитать по теме:
Как настроить 301 редирект самостоятельно
6. Уменьшите количество запросов к серверу
- Объедините все файлы JavaScript в один.
Внимание! При обнаружении в JavaScript-файле ошибки браузер прекращает обработку этого файла. Поэтому, перед объединением всех файлов в один убедитесь в их полной работоспособности.
Чтобы обнаружить ошибки в JS, воспользуйтесь консолью веб-браузера. В Firefox и Chrome она есть по умолчанию.
В Firefox нажмите правой кнопкой в окне браузера, в контекстном меню выберите пункт «Исследовать элемент». Появится панель, в которой мы можем исследовать и отлаживать наш код. Рядом со вкладкой «Инспектор» есть вкладка «Консоль», она то нас и интересует. Переключитесь на нее, обновите страницу, и вы увидите все ошибки JavaScript. В Chrome консоль вызывается из контекстного меню или клавишей F12.
- Объедините мелкие графические элементы сайта в CSS-спрайты.
Sprite Sheet — это одно большое изображение мелких графических элементов сайта, например иконок или кнопок. Благодаря CSS можно отображать каждый элемент отдельно.
Подробнее об использовании CSS-спрайтов читайте
здесь.
Это первая из трех статей о комплексном аудите сайта. В отдельных статьях рассмотрим SEO- и юзабилити-аудит. А если не хотите разбираться самостоятельно,
проверьте сайт в нашем сервисе. Он проведет полный аудит SEO, технички, ссылочного профиля, релевантности, трафика и остального, найдет ошибки на внутренних страницах и будет следить за позициями сайта.
В этом посте мы постарались помочь оптимизаторам сориентироваться в аудите технических параметров. Все существующие параметры сложно разобрать в посте на сайте, удобнее было бы сделать это в книге. Мы затронули основы, но вы всегда можете дополнить материал в комментариях.
Продолжение серии:
Самостоятельный аудит сайта: часть 2. SEO-аудит
Если в работе вашего сайта, размещенного на VDS, возникли неполадки (недоступность сайта, ошибки 500, 502, 504, ошибки базы данных и др.), рекомендуем перед обращением в службу технической поддержки выполнить базовую диагностику по инструкции ниже. Полученная информация поможет либо решить проблему самостоятельно, либо ускорить обработку обращения нашими специалистами.
Доступен ли сервер из внешней сети?
Проверить доступность сервера проще всего с помощью любого сервиса в сети, предоставляющего такую возможность: найти подобные сайты можно по запросам «ping online», «проверка доступности», «сервис ping» и так далее; их очень много и они бесплатны.
Также проверку можно выполнить из командной строки вашего компьютера.
В командной строке выполните:
ping IP_адрес_сервера
Если сервер доступен, в выводе сразу начнет отображаться информация об отправке пакетов и получении ответов от сервера. Это выглядит примерно следующим образом:
Для остановки выполнения команды нажмите Ctrl+C.
Если обмен пакетами не происходит — сервер недоступен.
В этом случае попробуйте проверить сетевые настройки на сервере. Для этого необходимо подключиться по SSH или использовать веб-консоль в панели управления.
Выполните команду:
ifconfig
Пример вывода с корректными настройками:
Если строка inet addr пустая, есть проблема с сетевыми настройками, которую можно попробовать решить настройкой статического IP-адреса.
Запущены ли службы для работы сайтов?
Для проверки работы служб подключитесь к серверу по SSH или используйте веб-консоль в панели управления.
Проверки выполняются командой вида:
service имя_службы status
Например, для Apache это будет команда:
service apache2 status
или:
service httpd status
Для Nginx:
service nginx status
Для MySQL:
service mysql statusservice mysqld status
Для MariaDB:
service mariadb status
Примеры запущенных служб:
Если в выводе не фигурирует слово running, служба не запущена.
В этом случае в первую очередь необходимо попытаться запустить службу. Это выполняется командой вида:
service имя_службы start
Например, для Apache2:
service apache2 start
Или:
service httpd start
Nginx:
service nginx start
MySQL:
service mysql startservice mysqld start
MariaDB:
service mariadb start
После запуска службы повторно проверьте работу сайтов. Если проблема сохраняется, переходите к следующим проверкам.
Состояние дискового пространства
Общую информацию можно получить командой:
df -h
В выводе будут данные о размере диска и доступном объеме.
Если дисковое пространство исчерпано, необходимо принять меры: расширить диск или удалить ненужные файлы.
Для работы с дисковым пространством можно использовать утилиты ncdu и du. Подробнее о работе с ними — в статье Анализ дискового пространства: ncdu, du.
Состояние inodes
Если индексные дескрипторы — inodes — исчерпаны, это тоже может быть причиной неполадок. В работе сервера начнут возникать ошибки и появляться уведомления о недостаточном дисковом пространстве.
Подробнее о диагностике и устранении проблемы см. в статье Переполнение inodes.
Наличие необходимых прав для директорий с логами
Необходимо проверить, назначены ли права на запись для директорий, в которые пишутся логи основных служб сервера.
Это директории:
/var/log/mysql/
/var/log/nginx/
/var/log/apache2/
# или:
/var/log/httpd/
Проверить наличие нужных прав можно командой:
ls -l /var/log/
Пример вывода:
Здесь мы видим, что у интересующих нас каталогов установлены корректные права, а именно — у владельца есть права на запись, чтение и исполнение (rwx):
drwxr-x--- 2 root adm 4096 Aug 16 09:26 apache2
drwxrwxr-x 2 mysql adm 4096 Aug 16 09:26 mysql
drwxr-xr-x 2 root adm 4096 Aug 16 09:27 nginx
Если у каталога нет нужных прав, их можно установить командой chmod:
chmod -R 755 /путь/к/каталогу/
Например:
chmod -R 755 /var/log/nginx/
В данном случае будут установлены права 755, т.е. rwxr-xr-x, то есть полный набор прав для владельца и права на чтение и исполнение — для остальных.
Если при проверке вы видите, что директория с логами той или иной службы отсутствует, ее необходимо создать командой mkdir и установить нужные права, например:
mkdir /var/log/mysql/
chmod -R 775 /var/log/mysql/
После того, как выполнены проверки дискового пространства, inodes и прав, повторно запустите службы и проверьте работу сайта.
Если часть служб по-прежнему не запускается или сохраняются проблемы в работе сайта, создайте обращение в техническую поддержку и сообщите в нем полученную в ходе диагностики информацию.























