Мой сайт имеет все динамически загружаемое содержимое.
Я написал несколько функций JS, которые меняют контент на основе полученного URL. Если кто-то отправится на сайт www.mysite.com/#1056, содержимое для него будет загружено.
function getLocationHash() {
//check if there is a location hash in the address bar, get that URL
if (window.location.hash != '') {
processURL()
}
}
Затем он вызывает функцию processURL
function processURL() {
if (window.location.hash != '') {
urlHash = window.location.hash;
//if it a catalog item, it has a number above #1000
if (urlHash > 10000) {
getDetail(urlHash);
}
Это отлично работает для истории или прыгает прямо на URL-адрес на сайте, однако другие сайты не могут следовать этому. Например, если я введу www.mysite.com/#1056 в статус Facebook, FB распечатывает только страницу индекса www.mysite.com. Он не проходит до конца JS. Это потому, что JS ищет свойство "окна"?
То же самое происходит при сканировании Google. Я установил карту сайта со всеми хешированными URL-адресами, но Google только сканирует страницу индекса.
Поэтому возникает вопрос: как мне взять то, что у меня есть, и правильно отформатировать URL-адрес, который другие сервисы, такие как Facebook, и Google могут "видеть"?
Любые советы будут высоко оценены.
#
Указывает начало идентификатора фрагмента. Это как вы ссылаетесь на часть страницы.
Его часто читают JavaScript для загрузки другого контента через Ajax, но это работает только в том случае, если клиент запускает JS.
Скребки, используемые Google и Facebook, не запускают JS.
Это решения, которые я обнаружил, когда я исследовал это.
Для обхода есть "hashbang", как описано на страницах google. https://developers.google.com/webmasters/ajax-crawling/docs/learn-more?hl=nl
А для ссылки на facebook вы можете, например, использовать html5 pushstate. http://badassjs.com/post/840846392/location-hash-is-dead-long-live-html5-pushstate