我用AngularJS制作了一个带有expressJS后端的应用程序。现在我想让它可抓取,我发现prerender.io。我认为我已经完成了所有正确的bur,因为某些原因我在预渲染仪表板中看不到任何统计信息。
在我的app.configure函数中,我已经包含了如下标记:
app.use(require('prerender-node').set('prerenderToken', 'my-token'));
在我的HTML中,我已经包含了元片段标记:
<meta name="fragment" content="!">
我做的最后一件事是告诉AngularJS使用hashprefix:
$locationProvider.html5Mode(false);
$locationProvider.hashPrefix('!');
但出于某种原因,如果我参考文档,我将无法获得正确的结果。下面你可以看到它应该做什么:
Google向您的服务器发送请求,如下所示:
http://www.example.com/?_escaped_fragment_=/user/123
你将网址改回来:
出于某种原因,如果我尝试这个,它仍然会添加#!标志添加了URL的结尾,所以如果我请求我的应用程序的URL像谷歌我得到这个:
因此它不会替换url中的哈希值。我认为这是我的问题的原因。
提前致谢!
编辑 - 如果我例如添加一条额外的路线,那么它可以工作:
app.get('/', function (req, res) {
res.sendfile('./public/index.html');
});
app.get('/test', function (req, res) {
res.sendfile('./public/index.html');
});
'/'
路由不起作用'/test'
路线确实有效。
答案 0 :(得分:3)
好的我解决了我的问题。从未调用'/'
路由,因为我的webpublic文件夹中有一个index.html文件。我将其重命名为public.html并更改了'/'
路由以获取此文件而不是index.html文件。
app.get('/', function (req, res) {
res.sendfile('./public/public.html');
});