HTML5 pushstate и SEO ссылка
Я пытаюсь реализовать историю pushstate на моем веб-сайте, чтобы загружать контент со страницы single.php внутри контейнера index.php.
У моего сайта есть две главные страницы: index.php и single.php.
На index.php есть ссылки, которые вызывают скрипт pushstate:
<a class="phplink" href="/Formlabs-3D-printer" title="Formlabs 3D printer">Post 12</a>
<a class="phplink" href="/Minimal-Bumper-for-iPhone-5" title="Minimal Bumper for iPhone 5">Post 11</a>
На моей странице single.php я использую метод isset get для динамической загрузки содержимого, соответствующего нажатой ссылке на index.php:
В моем файле .htaccess я переписываю ссылку URL (то, что причина, по которой в index.php ссылки являются чистыми):
Options +FollowSymLinks
RewriteEngine on
RewriteRule /([a-zA-Z0-9\-]+)$ /index.php
RewriteRule /([a-zA-Z0-9\-]+)$ /single.php?page=$1 [L]
И вот мой сценарий pushstate:
$.ajaxSetup({cache:false});
$(".phplink").click(function(){
var $post_link = $(this);
load_content($post_link.attr('title'),$post_link.attr('href'));
return false;
});
window.onpopstate = function(event) {
if (event.state) {
load_content(event.state.title, window.location.pathname, true);
} else {
var stateObj = {
title: document.title,
url: window.location.pathname,
};
url = window.location.pathname;
load_content(url,url);
}
}
function load_content(title,url,skipHistory) {
$.get(url,function (data) {
document.title = title;
var stateObj = {
title: title,
url: url
};
if (!skipHistory) {
if (typeof window.history.pushState == 'function') {
window.history.pushState(stateObj,title,url);
}
}
if(url.substring(1) != '') {
$("#ajaxify_container").html("loading...");
$("#ajaxify_container").load('single.php?page='+url.substring(1)+' #container-2');
}
else {
$("#ajaxify_container").html('');
}
});
}
Мой скрипт pushstate работает для загрузки контента по ссылке (на.phplink
нажмите). Это работает также для кнопки назад / вперед.
1-я проблема: когда я обновляю браузер (со ссылкой на pushstate в URL), он работает на Google Chrome (загрузка содержимого из файла single.php в контейнер index.php), но не в IE10 (ничего не загружается, он остается на index.php страница).
2-я проблема: если я отключу JavaScript, чтобы увидеть, чтослучается для googlebot (для SEO). Я могу't загрузить / добраться до страницы single.php, она всегда остается на index.php. Так что страница single.php можетне будет сканироваться поисковой системой (полагаю, но яя не уверен в этом). Это нормальное поведение, потому что я установил в своем файле .htaccess, что "все это ссылки " будет перенаправлен на index.php.
Я делаю этот трюк, потому что без него pushstate загружает страницу single.php при обновлении. И я нене хочу такого поведения. Я хочу, когда я обновляю его, просто загружаю контент из single.php в контейнер index.php.
Итак, моя главная проблема (проблема 2): я неЯ не знаю, как написать свой скрипт или мои ссылки на моей странице php, чтобы загружать содержимое в моем файле index.php, когда я нажимаю, я обновляю и перехожу назад / вперед.
При нормальном поведении pushstate, обновляет ли браузер, onpopstate может загружать контент со страницы в контейнер другой страницы (загружать контент из single.php в контейнер index.php)?
Я надеюсь, что кто-то может мне помочь и объяснить, как это работает. У меня есть некоторые трудности, чтобы понять, как это работает со ссылками.
Извините за мой английский, ям французский ...