Ehe*_*Tov 4 connect node.js express
做这个的最好方式是什么?
我想将所有请求重定向www.mysite.com到mysite.com
*.mysite.com到mysite.com是理想
我会想某种中间件.我仍然讨厌这个,因为它似乎不那么优雅而且有点浪费,但我认为我唯一的选择就是做这个服务器端.
由于Express 3不使用自己的HTTP服务器(而是将应用程序传递给http.createServer它),因此除非您告诉它,否则它不知道它正在运行什么端口.也就是说,您基本上可以使用以下内容执行操作:
app.use(function(request, response, next) {
var newHost = request.host.replace(/^www\./, '');
if (request.host != newHost) {
// 301 is a "Moved Permanently" redirect.
response.redirect(301, request.protocol + "://" + newHost + request.url);
} else {
next();
}
});
Run Code Online (Sandbox Code Playgroud)
您可以在模块中导出它并将其包装在带有端口的生成器中:
// no_www.js
module.exports = function(port) {
app.use(function(request, response, next) {
var newHost = request.host.replace(/^www\./, '');
if (request.host != newHost) {
var portStr = '';
if (request.protocol == 'http' && port != 80) portStr = ':' + port;
if (request.protocol == 'https' && port != 443) portSt r= ':' + port;
// 301 is a "Moved Permanently" redirect.
response.redirect(301, request.protocol + "://" + newHost + portStr + request.url);
} else {
next();
}
});
}
// app.js
var noWww = require('./no_www');
var app = express();
app.configure("development", function() {
app.set("port", 3000);
});
...
app.use(noWww(app.get('port')));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2419 次 |
| 最近记录: |