Служба проверки разметки W3C не показывает DOCTYPE

Почему W3C сообщает мне, что для моих страниц не задан тип документа (в частности, домашняя страница)? Моя домашняя страница использует 1column.phtml с допустимым типом документа (см. ниже), и вы можете видеть это при просмотре исходного кода в браузере. Служба проверки разметки w3c говорит мне, что нет установленного типа документа, почему?!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

Наш сайт разработки показывает действительный тип документа... и я даже пытался взять оттуда шаблон 1column.phtml (root) и заменить его живым, и все равно ничего. Я в полной растерянности, в чем проблема.


person Nick Rolando    schedule 22.10.2012    source источник


Ответы (2)


Первые 8 строк домашней страницы, отправляемой валидатору, предшествуют типу документа и говорят:



Строгие стандарты: Aitoc_Aitpagecache_Mobile_Detect::__construct() [aitoc-aitpagecache-mobile-detect.--construct]: небезопасно полагаться на системные настройки часового пояса. Используйте параметр date.timezone, переменную среды TZ или функцию date_default_timezone_set(). Если вы использовали какой-либо из этих методов и все еще получаете это предупреждение, вы, скорее всего, ошиблись в идентификаторе часового пояса. Вместо этого мы выбрали «Америка/Нью-Йорк» для «EDT/-4.0/DST» в /home/goorins/public_html/lib/Aitpagecache/Mobile/Detect.php в строке 42

Уведомление: неопределенный индекс: HTTP_ACCEPT в /home/goorins/public_html/lib/Aitpagecache/Mobile/Detect.php в строке 42

Строгие стандарты: setcookie() [function.setcookie]: небезопасно полагаться на системные настройки часового пояса. Используйте параметр date.timezone, переменную среды TZ или функцию date_default_timezone_set(). Если вы использовали какой-либо из этих методов и все еще получаете это предупреждение, вы, скорее всего, ошиблись в идентификаторе часового пояса. Вместо этого мы выбрали «Америка/Нью-Йорк» для «EDT/-4.0/DST» в /home/goorins/public_html/lib/Aitpagecache/Mainpage.php в строке 172< br />
Предупреждение: нельзя изменить информацию заголовка — заголовки уже отправлены (вывод начался в /home/goorins/public_html/lib/Aitpagecache/Mobile/Detect.php:42) в < b>/home/goorins/public_html/lib/Aitpagecache/Mainpage.php
в строке 172


Похоже, что это происходит от плагина AITOC magento. Для меня это мало что значит (PHP/apache/magento - это не мое), но похоже, что строка 42 Mobile/Detect.php предполагает, что для обработки будет HTTP-заголовок "accept". Средство проверки HTML не отправляет HTTP-заголовок «accept», поэтому возникает ошибка, о которой сообщается в верхней части выходной страницы. Возможно, поскольку он сообщает об ошибке, он также сообщает о предупреждениях о неправильной настройке параметров часового пояса.

person Alohci    schedule 24.10.2012
comment
Ооо чувак, спасибо тебе большое! Это было!! Глупый плагин ›‹ Я установил часовой пояс в конструкторе и поставил isset() проверку на эти переменные сервера и бац! Еще раз спасибо, низкий поклон! - person Nick Rolando; 24.10.2012

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

$ curl -I https://www.goorin.com/
HTTP/1.1 200 OK
Date: Tue, 23 Oct 2012 01:04:50 GMT
Server: LiteSpeed
Connection: close
Set-Cookie: frontend=7dcc17b985ecd8983ff6ade10e0f6f2c; expires=Tue, 23-Oct-2012 02:04:50 GMT; path=/; domain=..www.goorin.com; httponly
Set-Cookie: frontend=7dcc17b985ecd8983ff6ade10e0f6f2c; expires=Tue, 23-Oct-2012 02:04:50 GMT; path=/; domain=..www.goorin.com; httponly
Content-Type: text/html

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

Попробуйте загрузить домашнюю страницу с помощью curl

curl -I https://www.goorin.com/ > home.html

а затем с помощью службы проверки загрузки файлов W3C (вкладка «Проверить путем загрузки файла»). Когда я это сделал, валидатор перестал жаловаться на ваш DOCTYPE.

Таким образом, даже если это не отсутствие кодировки символов в ваших заголовках, это указывает на проблему, заключающуюся в доставке HTML-документа с вашего сервера в службу проверки.

person Alan Storm    schedule 23.10.2012
comment
Пришел сюда, чтобы сказать то же самое и отметить, что Валидатор видит корневой узел как br; - person benmarks; 23.10.2012
comment
Когда вы говорите об отсутствии кодировки символов, вы имеете в виду заголовок Content-Type, верно? Я обновил его, чтобы отразить Content-Type: text/html; charset=UTF-8, но до сих пор не получаю DOCTYPE :( - person Nick Rolando; 24.10.2012
comment
Или вы имеете в виду заголовок Content-Encoding? Это значение gzip - person Nick Rolando; 24.10.2012
comment
@Shredder — как я уже сказал, я не знаю. По какой-то причине этот документ при доставке с вашего веб-сервера вызывает ошибку, но когда он поступает с другого веб-сервера или загружается напрямую, все нормально. - person Alan Storm; 24.10.2012