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