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。