Javascript 使用express.js和prerender节点进行SEO

Javascript 使用express.js和prerender节点进行SEO,javascript,node.js,express,seo,prerender,Javascript,Node.js,Express,Seo,Prerender,前端: 我有SPA客户端网站,使用自己的路由系统。例如,它有路由http://localhost:8080/about 后端: 我正在使用express.js服务器(在端口3001上运行)上的prerender节点为爬虫机器人预渲染静态html: app.use(require('prerender-node') .set('prerenderServiceUrl', 'http://localhost:3000/') .set('afterRender', function (

前端:

我有SPA客户端网站,使用自己的路由系统。例如,它有路由
http://localhost:8080/about

后端:

我正在使用express.js服务器(在端口3001上运行)上的prerender节点为爬虫机器人预渲染静态html:

app.use(require('prerender-node')
    .set('prerenderServiceUrl', 'http://localhost:3000/')
    .set('afterRender', function (err, req, prerender_res) {
        console.log('URL: ', req.url); // here I see: "/about?_escaped_fragment_="
    }));
我的快速路线如下所示:

router.get('*', function (req, res, next) {
    res.sendFile(path.resolve('../frontend/dist/index.html'));
});
问题:

问题是如果我发送
http://localhost:3001/about?_escaped_fragment_=
作为对服务器的响应,我得到了static index.html主页(但我想预呈现关于部分)

据我所知,prerender节点中间件不知道如何导航到/关于部分,并且prerenders总是主页

问题:


如何根据链接预呈现“我的SPA”的“关于”页面?

看看:,这里有很多建议。我不明白你错在哪里@Hitmands,不清楚它是如何工作的。即使在本地运行的前端,如果我键入url,我也会得到404,因为我使用pushstate进行导航,但此url请求意味着我必须在根目录中包含about/index.html文件(我没有)。您不必将路由传递到express/router,您需要将请求传递给运行javascript的prerender.io,并返回html结果。如果您要进入
应用程序,请获取('*',/***/)
。。。这意味着您的配置有问题,或者,至少,您正在向应用程序发送不正确的userAgentString。。。例如,如果您通过browser/get访问应用程序,很明显express返回空索引。在开始开发类似于通用的呈现之前,您需要模拟爬虫程序请求。转到localhost:3001/about不应该给您404,因为您在服务器上有一个提供index.html的全面路由,无论URL看起来如何。如果prerender节点在catch all路由之前运行,则它应检测转义片段参数并发送该请求以进行预渲染。@prerender.io,这正是我所期望的,但如果我在浏览器中转到localhost:3001/about,我仍然可以在afterRender事件中看到prerender_res响应,并且prerender_res.body给出了我的html页面,该页面看起来只是index.html页面,没有其他应该出现在/about部分的内容;要清楚404,我在另一台本地服务器上没有使用路由器。get(“*”,…之类的东西