Не так давно был вопрос, и я придумал следующее решение.
Ваши URL должны указывать на реальные страницы, чтобы заставить его работать для пользователей с отключенным js. Обработчики кликов должны обрабатывать запросы ajax. Хэш должен содержать URL-адрес и часть, например &ajax
, чтобы указать тип запроса.
Если запрос отправлен из ajax, просто отправьте его. Если это не так, оберните содержимое в верхний и нижний колонтитулы, чтобы ответить на полный сайт.
Урлы должны работать со ссылкой на созданные хэши ajax и использовать их в качестве ссылок. Вся идея в основном имитирует поведение, которое вы можете видеть на facebook.
Javascript
// click handler for ajax links
function goToWithAjax(hash) {
hash = hash.href ? hash.getAttribute("href", 2) : hash;
ajax(hash, function(response) {
document.getElementById("content").innerHTML = response;
});
hash = ("#!/" + hash).replace("//","/");
window.location.hash = hash;
return false;
}
.htaccess
auto_prepend_file = "prepend.php"
auto_append_file = "append.php"
перед именем
$url = $_SERVER['REQUEST_URI'];
$parts = explode('#!', $url);
$hash = isset($parts[1]) ? $parts[1] : false;
// redirect if there is a hash part
if ($hash) {
header("Location: $hash");
}
// find out if it's an ajax request
$ajax = strstr($url, "&ajax");
// we need header if it's not ajax
if (!$ajax) {
get_header();
}
Append
// we need footer if it's not ajax
if (!$ajax) {
get_footer();
}
get_header()
function get_header() {
echo <<< END
<html>
<head></head>
<body>
<div id="page">
<div id="header">
<div id="logo"></div>
<ul id="nav">menu...</ul>
</div>
<div id="content">
END;
}
get_footer()
function get_footer() {
echo <<< END
</div> <!-- end of #content --->
<div id="footer">(c) me</footer>
</div> <!-- end of #page --->
</body>
</html>
END;
}
Я второй это решение, это довольно распространенная реализация, которую вы видите в Facebook и т. Д.Примечание. Если вы хотите разоблачить контент для пауков, убедитесь, что у вас есть доступная карта сайта. – funwhilelost
ссылки - все ссылки на полные страницы. Пауки получают контент так же, как и на странице WEB 1.0. Но да, файлы Sitemap нужны в любом случае. :) – galambalazs
Подход/добавление не очень мощный. С этим сложно построить сложные объекты. Лучше иметь полную версию страницы и несколько вызываемых частей из разных ее частей, используя подход MVC. –