prerender.io 不使用 expressjs 和 angularjs
prerender.io not working with expressjs and angularjs
我已经设置了一个服务器 Express.js:
const env = process.env.ENV || 'PROD';
const port = process.env.PORT || 8080;
const express = require('express');
const app = express();
if(env === 'PROD') {
app.all('*', function(req, res, next) {
var protocol = req.headers['x-forwarded-proto'];
if(protocol && protocol === 'http') {
res.redirect(301, 'https://' + req.headers.host + req.url);
}
return next();
});
}
app.use(require('prerender-node').set('prerenderToken', 'mytoken'));
app.use(express.static(__dirname + '/app/'));
app.get('*', function(req, res){
res.sendFile(__dirname + '/app/index.html');
});
app.listen(port);
console.log("App started on port "+port);
在 angularjs 应用程序中设置配置:
config(['$locationProvider', '$routeProvider', function ($locationProvider, $routeProvider) {
$locationProvider.html5Mode(true);
}])
在index.html中:
<meta name="fragment" content="!">
如文档所述:
https://prerender.io/documentation/test-it
我愿意:
http://mydomainm/user/1?_escaped_fragment_=
但是我的页面没有缓存。
看起来它应该可以正常工作。您可以发送电子邮件至 support@prerender.io 以便我们检查您的抓取统计信息并在我们这边进行一些测试吗?谢谢!
看起来中间件工作正常,但您向我们发送了一个 http URL,所以我们返回了一个 301。您可以将您的中间件修改成这样吗:
app.use(require('prerender-node').set('prerenderToken', 'mytoken').set('protocol', 'https'));
这应该可以解决重定向问题并使一切正常工作。
我已经设置了一个服务器 Express.js:
const env = process.env.ENV || 'PROD';
const port = process.env.PORT || 8080;
const express = require('express');
const app = express();
if(env === 'PROD') {
app.all('*', function(req, res, next) {
var protocol = req.headers['x-forwarded-proto'];
if(protocol && protocol === 'http') {
res.redirect(301, 'https://' + req.headers.host + req.url);
}
return next();
});
}
app.use(require('prerender-node').set('prerenderToken', 'mytoken'));
app.use(express.static(__dirname + '/app/'));
app.get('*', function(req, res){
res.sendFile(__dirname + '/app/index.html');
});
app.listen(port);
console.log("App started on port "+port);
在 angularjs 应用程序中设置配置:
config(['$locationProvider', '$routeProvider', function ($locationProvider, $routeProvider) {
$locationProvider.html5Mode(true);
}])
在index.html中:
<meta name="fragment" content="!">
如文档所述: https://prerender.io/documentation/test-it
我愿意:
http://mydomainm/user/1?_escaped_fragment_=
但是我的页面没有缓存。
看起来它应该可以正常工作。您可以发送电子邮件至 support@prerender.io 以便我们检查您的抓取统计信息并在我们这边进行一些测试吗?谢谢!
看起来中间件工作正常,但您向我们发送了一个 http URL,所以我们返回了一个 301。您可以将您的中间件修改成这样吗:
app.use(require('prerender-node').set('prerenderToken', 'mytoken').set('protocol', 'https'));
这应该可以解决重定向问题并使一切正常工作。