我的网站包含所有动态加载的内容。
我编写了一些 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's a catalog item, it has a number above #1000
if (urlHash > 10000) {
getDetail(urlHash);
}
这对于历史记录或直接跳转到网站上的 URL 来说效果很好 - 但是,其他网站无法遵循这一点。例如,如果我在 Facebook 状态中输入 www.mysite.com/#1056,FB 只会抓取 www.mysite.com 索引页面。它不会一直执行到 JS 的末尾。这是因为 JS 正在寻找“window”属性吗?
Google 抓取也是如此。我设置了一个包含所有哈希 URL 的站点地图,但 Google 只抓取索引页。
所以问题是:我如何利用这里的内容并正确设置 URL 的格式,以便 Facebook 和 Google 等其他服务可以“看到”?
任何提示将不胜感激。
最佳答案
#
表示片段标识符的开始。这是链接到页面的一部分的方式。
它经常被滥用,由 JavaScript 读取以通过 Ajax 加载不同的内容,但这只有在客户端运行 JS 时才有效。
Google 和 Facebook 使用的抓取工具不运行 JS。
- 停止使用片段标识符加载内容
- 改用真实网址
- 让服务器为这些网址提供完整的页面
- 使用 the history API 应用您的 Ajax 更改更新 URI 以匹配将直接加载您使用 JS 创建的页面的 URI
关于javascript - 为什么其他网站/服务看不到我的哈希 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19564166/