Я создаю сайт с глубокими ссылками на AJAX.
Я хочу, чтобы PHP загружал весь HTML-код страницы, если пользователь пытается получить доступ к сайту с помощью браузера, не поддерживающего Javascript, или если это поисковый робот. Обычно PHP возвращает всю страницу.
Напротив, когда пользователь пытается получить доступ к сайту с помощью браузера, поддерживающего Javascript, я хочу, чтобы PHP возвращал только код шаблона, а Javascript (AJAX) позаботился обо всем остальном. Обычно PHP загружает только элементы дизайна и позволяет Javascript заполнять их содержимым.
Я изучал функцию PHP get_browser ()
, но мне показалось, что это не такой надежный инструмент. Какова отраслевая практика проверки, поддерживает ли браузер Javascript или это поисковый робот, использующий PHP?
Справочная информация :
Почему я хочу, чтобы сайт имел такое поведение.
Поскольку я хочу, чтобы домашняя страница загружалась просто путем загрузки адреса: example.com
, который не отправляет никаких запросов в PHP, PHP возвращает HTML-код домашней страницы. Однако это вызывает проблемы, когда пользователь пытается загрузить следующую страницу: example.com # foo
. Итак, в этом примере PHP вернет домашнюю страницу, и после загрузки домашней страницы Javascript (AJAX) изменит содержимое так, чтобы он отображал правильное содержимое для #foo
.Это заставит пользователя увидеть домашнюю страницу, поэтому время загрузки будет медленнее, а взаимодействие с пользователем будет не таким приятным. Однако, если мой PHP-скрипт может выяснить, что если использование браузера с поддержкой Javascript пытается загрузить страницу, он вернет только шаблон веб-сайта, у которого нет содержимого), и javascript заполнит этот шаблон любым содержимым. должен отображаться для #foo. С другой стороны, если неразделенный браузер Javascript или поисковый робот попытаются получить доступ к странице example.com # foo
, будет возвращена домашняя страница.
Я использую библиотеку SWFaddress ( http://www.asual.com/swfaddress/ ) для глубинных ссылок.
Править
Спасибо, ребята. Раньше я не думал об использовании
.
Вот что я решил сделать. PHP по умолчанию загружает такие страницы, как example.com
или example.com # foo
(что по сути то же самое, что example.com
с точки зрения PHP поскольку фрагменты по определению не отправляются на сервер) пустой (просто визуальный шаблон) с тегом
внутри для содержимого домашней страницы. Таким образом, пользователи с javascript не увидят домашнюю страницу, а AJAX заполнит содержимое страницы в соответствии с фрагментом #foo
. С другой стороны, поисковые роботы и пользователи без javascript увидят домашнюю страницу.
Еще раз спасибо. Думаю, это довольно простое и элегантное решение. Если у вас есть дополнительные предложения, оставьте комментарий или другой ответ.