Можно ли получить 404 ошибки плюс содержимое обратно?
С помощью Apache можно ли отправить заголовок статуса 404, но затем отправить действительный контент? Потому что именно это сейчас и происходит с http://doubleabody.com/ на a2hosting.com прямо сейчас. Веб-журналы показывают, что все соединения (кроме домашней страницы) имеют статус 404, но после этого браузеры получают действительный контент. Это вызывает нечто странное. В IE, когда у него включены Friendly HTTP Errors, он отображает 404. В IE с отключенными Friendly HTTP Errors он не отображает 404 и отображает содержимое просто отлично. Во всех других браузерах они видят действительный контент и игнорируют ошибку 404, которую записывает сервер.
Раньше эта проблема не возникала до 2 недель назад, и единственное, что изменилось за 14 месяцев на сайте, это обновления системы Apache, как обычно. (Я признаю, что клиент попросил меня отредактировать шаблон домашней страницы и показать сообщение пользователям IE о проблеме.)
Я хочу доказать, что это неверно сконфигурированный конфиг Apache. Я скачал базу данных и файлы хостинга для этого сайта WordPress, и теперь я собираюсь устранить неполадки, чтобы увидеть, есть ли у того же кода проблема на моей рабочей станции.
Но вопрос остается открытым - может ли Apache вернуть заголовок состояния 404 и все еще вернуть действительный XHTML после этого?
1 ответ
Да. А 404 не подразумевает никакого контента. Вы можете на законных основаниях обслуживать контент более 404, например, предположения о том, что на самом деле хотел пользователь, или полезную и красивую страницу с ошибками со ссылками на ваши документы и т. Д. В этом конкретном случае я предполагаю, что фронт-контроллер настроен на использование умных URL-адресов, т. е. фактического файла для страницы с именем /page нет. Скорее всего, это означает, что Apache настроен (с mod_rewrite) на отправку всех запросов на файлы, которые не существуют, в /index.php (или аналогичный), который затем решает, какой контент обслуживать для URL. Похоже, что тогда он явно не устанавливает статус 200, как только выбирает правильный контент. Я не думаю, что это проблема конфигурации Apache, но проблема конфигурации WordPress.
Редактировать: Возможно, ваш файл.htaccess отправляет отсутствующий файл перенаправления в /index.php с явным статусом 404.