Angular SEO / NodeJS / PhantomJS – 提供静态HTML文件

我正在实施我自己的PhantomJS解决scheme,以便为search引擎抓取工具提供快照。

  • 我的快照在这里:/ public / snapshots
  • 我的url如下所示: http : //example.com/#!/a/b/c

当一个爬虫来的时候,url的/#!/像这样被转换: http : //example.com/?_escaped_fragment _=/a/b/ c

我想从抓取我的网页之一时,从/ public /快照的静态文件提供给爬虫。

当前解决scheme

我赶上了url的改变,并重写了这个:

  • http://example.com/?_escaped_fragment=/a/b/c (含nginx
  • 进入这个: http : //example.com/snapshots/a/b/c

它来到我的NodeJS上的路线,根据url参数获取html文件名。 在这种情况下,它将是/snapshots/a/b/c.html

我得到的文件:

fs.readFile(file_path, function(err, content) { res.set('Content-Type', 'text/html'); res.send(content); }); 

问题

当我将Content-Type设置为HTML时,Angular / Express进行redirect,我的url如下所示:

  • http://example.com/?_escaped_fragment_=/a/b/c#!/

如果我去这个url,我可以看到正确的/a/b/c.html快照文件,但几毫秒后,我被redirect到我的主页。

问题

  • 如何在不使用Express和Angularredirect的情况下提供静态文件?
  • 如果我从http://example.com/?_escaped_fragment_=/a/b/credirect到http://example.com/snapshots/a/b/c.html ,哪种方法效果不错,search引擎同意这个?

谢谢