【发布时间】:2015-03-02 16:19:43
【问题描述】:
最近我看到一些文章说 Google 现在会抓取网站并呈现 CSS 和 Javascript。 Google 自己的示例文章:http://googlewebmastercentral.blogspot.co.uk/2014/05/understanding-web-pages-better.html
我在 Angular 中有一个单页应用程序设置,在路由上使用 HTML5 模式。我的 index.html 中的 ng-view 是根据 URL 填充的,如下所示:
app.config(function($routeProvider, $locationProvider){
$locationProvider.html5Mode(true);
$routeProvider.when("/", {
templateUrl: "/views/dashboard.html"
}).when("/portfolio", {
templateUrl: "/views/portfolio.html"
});
});
Google 现在应该转到www.example.com/portfolio,执行从views/portfolio.html 引入内容的javascript,并且能够读取所有这些内容吗?
根据我读过的那些文章,这就是应该发生的事情。这一篇特别详细解释了关于Angular:https://weluse.de/blog/angularjs-seo-finally-a-piece-of-cake.html
这就是问题所在。当我使用 Google 网站管理员工具和 Fetch 或 Fetch and Render 功能查看 Google 如何查看我的页面时,它不会呈现 JS,而只会在我的 index.html 中显示初始 HTML。
有效吗?我做错了什么吗?如何测试?
【问题讨论】:
-
您添加了
.hashPrefix('!')和<meta name="fragment" content="!">部分吗?它们对于机器人所需的_escaped_fragment部分是必需的。=> developers.google.com/webmasters/ajax-crawling/docs/… -
@PlantTheIdea 当我阅读问题中的第二篇文章时,我切换到了 HTML5 模式(没有 hashPrefix)。那里的博主解释了如何使用 HTML5 模式,Google 仍然会执行 JS。不确定这是不是真的。
-
另外,肯定有可能有漂亮的网址但仍然在谷歌上索引?不这样做似乎很可笑。
-
有很多方法可以做到这一点,但最安全的方法是使用该片段。它是 Google(以及其他搜索机器人)将转义片段应用于站点的标识符。我最近刚刚使用 Angular 建立了一个站点,并且提到了
<meta>标签,在网站管理员工具上呈现没有问题。 -
@PlantTheIdea 因此,从 MEAN 堆栈 SPA 在 Google 上获得索引的唯一安全方法是使用
/#!/破坏您的网站 URL?这对我来说似乎有点疯狂,并且可能足以让很多人停止使用这项技术。
标签: javascript html angularjs seo