我已经使用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
我这样做:
答案 0 :(得分:0)
看起来应该可以正常工作。您可以发送电子邮件至support@prerender.io,以便我们检查您的抓取统计信息并进行一些测试吗?谢谢!
答案 1 :(得分:0)
因此,看起来中间件工作正常,但是您向我们发送了一个http URL,因此我们返回了301。您能否将中间件修改为如下所示:
app.use(require('prerender-node').set('prerenderToken', 'mytoken').set('protocol', 'https'));
这应该可以解决该重定向问题,并使一切正常运行。