相当于这个.htaccess的nodejs

是否有可能在node.js构build这样的代码?

 <IfModule mod_rewrite.c>    RewriteEngine on    RewriteCond% {REQUEST_URI}! / (View) / [NC]    RewriteCond% {REQUEST_FILENAME}!-F    RewriteRule ^ (. *) $ Index.html [L, QSA] </IfModule> 

url显示的path不是“view”,也是不存在的文件,然后写index.html

使用类似expressconnect东西

更新:我需要一个正则expression式!/(view)/在路由中的expressnode.js

你有没有尝试过:

  1. 为静态服务
  2. 捕获/查看url
  3. 抓住一切

     app.configure(function(){ app.use(express.static(__dirname+'/public')); // Catch static files app.use(app.routes); }); // Catch /view and do whatever you like app.all('/view', function(req, res) { }); // Catch everything else and redirect to /index.html // Of course you could send the file's content with fs.readFile to avoid // using redirects app.all('*', function(req, res) { res.redirect('/index.html'); }); 

要么

  1. 为静态服务
  2. 检查URL是否为/ view

     app.configure(function(){ app.use(express.static(__dirname+'/public')); // Catch static files app.use(function(req, res, next) { if (req.url == '/view') { next(); } else { res.redirect('/index.html'); } }); }); 

要么

  1. 像平常一样捕捉静力
  2. 赶上NOT /查看

     app.configure(function(){ app.use(express.static(__dirname+'/public')); // Catch static files app.use(app.routes); }); app.get(/^(?!\/view$).*$/, function(req, res) { res.redirect('/index.html'); }); 

最后的结构是:

 var express = require('express'), url = require('url'); var app = express(); app.use(function(req, res, next) { console.log('%s %s', req.method, req.url); next(); }); app.configure(function() { var pub_dir = __dirname + '/public'; app.set('port', process.env.PORT || 8080); app.engine('.html', require('ejs').__express); app.set('views', __dirname + '/views'); app.set('view engine', 'html'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookieParser()); app.use(express.static(pub_dir)); app.use(app.router); }); app.get('/*', function(req, res) { if (req.xhr) { var pathname = url.parse(req.url).pathname; res.sendfile('index.html', {root: __dirname + '/public' + pathname}); } else { res.render('index'); } }); app.listen(app.get('port')); 

感谢大家。 PD:使用模块ejs呈现html