6

我用 AngularJS 制作了一个带有 expressJS 后端的应用程序。现在我想让它可以抓取,我找到了prerender.io。由于某种原因,我认为我已经完成了所有正确的 bur,我在 prerenderer 仪表板中看不到任何统计信息。

在我的 app.configure 函数中,我包含了如下令牌:

app.use(require('prerender-node').set('prerenderToken', 'my-token'));

在我的 HTML 中,我包含了元片段标签:

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

我做的最后一件事是告诉 AngularJS 使用哈希前缀:

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

但是由于某种原因,如果我参考文档,我不会得到正确的结果。下面你可以看到它应该做什么:

Google 向您的服务器发送请求,如下所示:

http://www.example.com/?_escaped_fragment_=/user/123

你把 url 变回这个:

http://www.example.com/#!/user/123

出于某种原因,如果我尝试这样做,它仍然会添加 #! 标志添加 URL 的末尾,所以如果我请求我的应用程序的 URL,如谷歌,我会得到:

http://www.my-website.com/?_escaped_fragment_=#!/home

所以它不会替换 url 中的哈希值。我认为这是我的问题的原因。

提前致谢!

编辑 - 例如,如果我添加一条额外的路线,那么它可以工作:

app.get('/', function (req, res) {
    res.sendfile('./public/index.html'); 
});

app.get('/test', function (req, res) {
    res.sendfile('./public/index.html'); 
});

路线'/'不起作用'/test'路线确实起作用。

4

1 回答 1

3

好的,我解决了我的问题。该'/'路线从未被调用,因为我的 webpublic 文件夹中有一个 index.html 文件。我将其重命名为 public.html 并更改了'/'获取此文件而不是 index.html 文件的路径。

app.get('/', function (req, res) {
    res.sendfile('./public/public.html');
});
于 2014-01-27T11:11:45.697 回答