为AngularJS App创建用于搜索引擎抓取的HTML快照

时间:2016-11-18 05:39:49

标签: javascript php jquery html angularjs

首先让我告诉你我想做什么。

我想索引我在Angular JS中制作的网站,为此我已经阅读了谷歌出于此类目的的所有文档或文章。

我发现的是:

我需要使用html5Modehashbag模式将我的角度js网址转换为友好网址。

喜欢:http://www.example.com/#/abouthttp://www.example.com/#!/about或仅http://www.example.com/about

使用<meta name="fragment" content="!">

因此,当我的网站上有任何抓取工具发出Googlebot时,它会显示我的网址为http://www.example.com/?_escaped_fragment_=/about所以现在我需要将此请求提供给静态html页面.... ??

现在我的问题是我如何使用php框架生成这个html静态页面,这个html应该在其内容完全加载后自动创建意味着如果angular js正在加载带有$ http请求的数据那么这个html只会在html模板中加载所有数据后生成。

只有在可以自动生成此html的情况下,才能将此html提供给抓取工具。

我已经通过手动创建一些html页面进行了本地测试,并检查如果请求带有_escaped_fragment_参数,那么它将服务于该特定的静态html页面。

但是我无法找到方法,我将使用php框架为特定的角度js请求创建html页面。

我不想使用任何npm服务。我想在php和/或任何jQuery Plugin中完全创建它。

1 个答案:

答案 0 :(得分:0)

除了需要服务器之外,您还可以将转发的片段请求重定向到服务器在呈现各种视图后拍摄HTML快照,然后将其提供给Googlebot等,不要忘记您还需要现有Web服务器(如Apache或IIS)中的设置,以重定向到处理转义片段的新服务器。

我感谢您正在寻找一个PHP解决方案,并且不想使用像prerender或seoserver包那样的NPM,但我希望以您的方式提供另一种更简单的解决方案:使用现有的托管解决方案改为https://www.seo4ajax.com/https://prerender.io/。他们将为您提供可以抓取您网站的SEO服务器,除非您拥有一个超过几百页的庞大数据驱动网站,否则通常这是免费的。减少负载,无需再运行其他服务器,并获得一些不错的管理面板来查看哪些爬虫已经达到SEO重定向等等。

从广义上讲,你需要在你提到的HTML中使用meta标签,以及AngularJS配置中的这些设置:

$locationProvider.html5Mode(true);
$locationProvider.hashPrefix('!');

然后是一些自定义重定向设置,例如.htaccess文件,如果你的现有服务器是Apache,这些网站会给你,你可以复制和粘贴。