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

时间:2011-10-29 10:04:52

标签: ajax node.js express

我有

的静态路线
/public/slides/lecture1.html#!3

显示讲道的第三个div元素(其他div HTMLelements将有display:none;)。

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

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

并返回只有一个div元素的单页 - 这样Google就可以正确地在讲座1.html中为幻灯片3中的文本编制索引。

我如何使用Express?

是否可以在已经由express.static提供的链接上添加GET请求处理程序?

由于

3 个答案:

答案 0 :(得分:4)

结帐https://github.com/OptimalBits/Crawlme。它是一个快速中间件,可以自动处理。就这样做,你就是ajax-crawlable:

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);

答案 1 :(得分:2)

正如我们在IRC上谈到的那样,这不会出现在“静态路由”类别中(我的意思是你不会使用express.static提供此服务)。

您要做的是创建Express路线并根据您的查询变量渲染该文件:

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');
  }
});

答案 2 :(得分:0)

您可以使用req.query属性来访问快速请求中的查询字符串。