AJAX在静态路由上使用Express进行爬取

我有一个静态路由

/public/slides/lecture1.html#!3 

它显示lecture1.html的第三个div元素(其他div HTMLelements将display:none; )。

我使用Express app.use(express.static(WEBROOT)); 一切正常。 但我想能够使幻灯片AJAX Crawable,所以我想对请求作出反应,看起来像这样:

 /public/slides/lecture1.html?_escaped_fragment_=3 

并返回只有一个div元素的单个页面 – 这样Google就可以正确地从lecture1.html的幻灯片3中索引文本。

我如何使用Express来做到这一点?

有没有可能在已经由express.static服务的链接上添加GET请求处理程序?

谢谢

当我们谈论IRC时,这不会是在“静态路由”类别(我的意思是你不会用express.static来服务这个)。

你要做的是创build一个Express路线,并根据你的查询variables渲染该文件:

 app.get('/lecture1.html', function (req, res) { if (req.query._escaped_fragment_ == 3) { // .. do something.. } else { // render lecture1.html here // you can just rename the file lecture1.ejs // move it to the views directory // and then render it like res.render('lecture1.ejs'); } }); 

看看https://github.com/OptimalBits/Crawlme 。 这是一个自动处理这个问题的快递中间件。 只要做到这一点,你是ajax可抓取的:

 var express = require('express'), http = require('http'), crawlme = require('crawlme'); var app = express() .use(crawlme()) .use(express.static(__dirname + '/webroot')); http.createServer(app).listen(80); 

您可以使用req.query属性在快速请求中访问查询string。