简而言之:当我访问st
时,如何让index.html
提供/
?
我正在使用Express中的st module(或Connect,无关紧要)。这是我的全部代码:
var st = require('st');
var path = require('path');
var connect = require('connect');
var app = connect();
app.use(st({
url: '/',
path: path.resolve(__dirname, 'public'),
index: 'index.html', // !!! PROBLEM LINE !!!
cache: false,
passthrough: true
}));
app.use(function(req, res) {
res.end('This is not served from the st module.');
});
app.listen(8000, function() { console.log('App started.'); });
当我访问localhost:8000/index.html
时,我看到了该文件。当我访问localhost:8000/
时,我不看到索引HTML。
我为index
选项尝试了以下操作,没有运气:
index: false
index: true
index: 'index.html'
index: 'public/index.html'
index: path.resolve(__dirname, 'public/index.html')
访问st
时如何让index.html
提供/
?
答案 0 :(得分:0)
我实现了一个重定向,例如:
routes['/'] = function(req, res) {
res.redirect('/index.html');
};
它有效!
答案 1 :(得分:0)
将您的index.html
移至目录public。因为st
按以下方式处理请求:
if (u.indexOf(this.url) !== 0) return false
表示您当前访问的网址必须是url
设置的选项app.use()
的子网址。
在此示例中,您将'/public'
映射到'/'
。因此,除非您在原始public/index.html
文件夹下创建另一个名为public
的文件夹并将public
放入其中,否则您无法使用index.html
。
您不能使用../index.html
,因为st
不允许这样做(您正在访问unmap文件!),您将收到403
错误。
如果仍然失败,请尝试其他网络浏览器。我尝试 Chrome 后,但 Firefox 失败了。这可能是由缓存选项引起的。
答案 2 :(得分:0)
此:
st({
path: __dirname + "/web",
url:"/",
index: "/index.html"
});
为我工作。但我必须先清除浏览器缓存。