2015-09-06 2 views
0

Я обслуживаю угловые страницы из экспресс-доставки. Я не могу получить PreRender обслуживать до формирования страниц для продуктов:Prerender не обслуживает товары

http://www.minilolo.com/?_escaped_fragment_=/products/Lolo-Pink

Но другие страницы, как этот исправны:

http://www.minilolo.com/?_escaped_fragment_=/products

Я думаю, что, возможно, придется добавить некоторые экспресс-маршрутов , но хотелось бы знать, нахожусь ли я на правильном пути. Благодаря!

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

var app = express(); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.set('view engine', 'ejs'); 

app.use(require('prerender-node').set('prerenderToken', 'xyz123')); 

/** 
* Development Settings 
*/ 
if (app.get('env') === 'development') { 
    // This will change in production since we'll be using the dist folder 
    app.use(express.static(path.join(__dirname, '../client'))); 
    // This covers serving up the index page 
    app.use(express.static(path.join(__dirname, '../client/.tmp'))); 
    app.use(express.static(path.join(__dirname, '../client/app'))); 


    // Error Handling 
    app.use(function(err, req, res, next) { 
     res.status(err.status || 500); 
     res.render('error', { 
      message: err.message, 
      error: err 
     }); 
    }); 
} 

/** 
* Production Settings 
*/ 
if (app.get('env') === 'production') { 

    // changes it to use the optimized version for production 
    app.use(express.static(path.join(__dirname, 'dist'))); 
    // added to serve up products pages 
    app.use(function(req, res) { 
     // Use res.sendfile, as it streams instead of reading the file into memory. 
     res.sendfile(__dirname + '/dist/index.html'); 
    }); 

    // production error handler 
    // no stacktraces leaked to user 
    app.use(function(err, req, res, next) { 
     res.status(err.status || 500); 
     res.render('error', { 
      message: err.message, 
      error: {} 
     }); 
    }); 
} 

module.exports = app; 

EDIT: Я разыскал этот вопрос пререндер преобразования в '_escaped_fragment_ =?' '#!'. Угловой тогда не знает, какой маршрут использовать, если у меня нет $ locationProvider.hashPrefix ('!') На месте (которое я не хочу использовать). Я не хочу префикс # #, если ему может помочь.

2015-09-07T12:17:17.566Z got 200 in 12713ms for http://localhost:3000/#!/products 
2015-09-07T12:17:18.773Z Timed out. Sending request with HTML on the page 
2015-09-07T12:17:18.785Z got 200 in 12732ms for http://localhost:3000/#!/products 
2015-09-07T12:19:04.589Z getting http://localhost:3000/#!/products 
+0

Ссылка, которую вы указали, выглядит так, как будто она отлично работает для меня. В чем проблема? –

+0

Его обслуживание вверх по содержимому от [http://www.minilolo.com/](http://www.minilolo.com/) вместо фактической страницы продукта [http://www.minilolo.com/products/ Лоло-розовый] (http://www.minilolo.com/products/Lolo-Pink) – user1074891

ответ

1

Как поясняется на следующих ссылках:

https://github.com/prerender/prerender/issues/198 https://developers.google.com/webmasters/ajax-crawling/docs/specification?hl=en

Запрос из поиска имеет в конце пути, а не сразу после FQDN '_escaped_fragment_ =?'.

http://www.minilolo.com/?_escaped_fragment_=/products/Lolo-Pink < - это не http://www.minilolo.com/products/Lolo-Pink?_escaped_fragment_= < - это!

Смежные вопросы