Статус 200 для 404 Не найдена страница CMS


Короче говоря, Magento возвращает статус 200 для страницы 404 Not Found CMS, для того, что кажется довольно стандартной конфигурацией:

enter image description here

Все работает нормально, когда URL-адрес изменен на cms/index/defaultNoRoute, страница по умолчанию "Не найдена" загружается со статусом 404.

Кроме того, абсолютно все отлично работает на копии веб-сайта на другом сервере. Что заставило бы меня заподозрить конфигурацию Apache. Не уверен, однако, на что обращать внимание для.

Вот заголовки ответов как для действий defaultNoRoute, так и для действий Noroute:

$ curl -I http://www.server.com/cms/index/defaultNoRoute
HTTP/1.1 404 Not Found
Date: Thu, 25 Apr 2013 12:56:07 GMT
Server: Apache
X-Powered-By: PHP/5.2.17
Set-Cookie: frontend=332f53c81eee1f730f430c0f59e0dd83; expires=Thu, 25-Apr-2013 13:56:08 GMT; path=/; domain=www.server.com; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Status: 404 File not found
Vary: Accept-Encoding,User-Agent
Content-Type: text/html; charset=UTF-8

$ curl -I http://www.server.com/cms/index/noRoute
HTTP/1.1 200 OK
Date: Thu, 25 Apr 2013 12:56:11 GMT
Server: Apache
X-Powered-By: PHP/5.2.17
Set-Cookie: frontend=361b3804feaea66a6fcdf1aee048ce44; expires=Thu, 25-Apr-2013 13:56:12 GMT; path=/; domain=www.server.com; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding,User-Agent
Content-Type: text/html

Кто-нибудь может указать мне правильное направление? Ваше здоровье.

Author: Jan Tomka, 2013-04-25

1 answers

По моему опыту, это чаще всего вызвано плохо написанными интеграциями CMS. Нередко интеграция CMS переписывает действие noRoute, чтобы перехватить, когда Magento выдаст 404, захватить контент с CMS (если он доступен), а затем предоставить его в разделе содержимого страницы.

Однако что идет не так, так это когда эти пользовательские интеграции затем не обнаруживают, когда у них также нет содержимого для URL-адреса в CMS, и без разбора отправляют код ответа 200 с пустым содержимым или страницей содержимого 404, предоставленной CMS (но с кодом ответа 200).

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

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

 4
Author: davidalger, 2013-04-25 13:42:13