AJAX Сканирование с помощью Express на статических маршрутах - PullRequest
2 голосов
/ 29 октября 2011

У меня есть статический маршрут для

/public/slides/lecture1.html#!3

, который отображает третий элемент div (другие div HTML-элементы будут иметь display:none;) lecture1.html.

Я использую Express app.use(express.static(WEBROOT)); и все работает нормально. Но я хочу иметь возможность сделать этот слайд AJAX Crawable, поэтому я хочу реагировать на запрос, который выглядит следующим образом:

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

и вернуть одну страницу только с одним элементом div, чтобы Google правильно проиндексировал текст из слайда 3 в файле lecture1.html.

Как мне это сделать с помощью Express?

Можно ли добавить обработчик GET-запроса к ссылке, которая уже обслуживается express.static?

Спасибо

Ответы [ 3 ]

4 голосов
/ 24 июня 2013

Check https://github.com/OptimalBits/Crawlme. Это промежуточное программное обеспечение Express, которое обрабатывает это автоматически. Просто сделайте это, и вы - 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);
2 голосов
/ 04 ноября 2011

Как мы говорили по IRC, это не относится к категории "статический маршрут" (я имею в виду, что вы не будете обслуживать это с помощью express.static).

Что бы вы сделали, это создали быЭкспресс-маршрут и рендеринг этого файла на основе переменных вашего запроса:

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');
  }
});
0 голосов
/ 01 ноября 2011

вы можете использовать свойство req.query для доступа к строке запроса в экспресс-запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...