総node.js初心者が、さまざまなチュートリアルやWebサイトのデモコードで遊んでいると、理解できないことに気づきました...
つまり、 /public フォルダーに index.html がある場合、
app.get("/", function (req, res) {
console.log("get /");
res.redirect("/test.html");
});
単に呼び出されることはありません。index.html の名前を index2.html に変更するとすぐに、メソッドが呼び出され、/public/test.html にリダイレクトされます。
これは私が持っているものです:
var io = require('socket.io'),
express = require('express'),
MemoryStore = express.session.MemoryStore,
app = express.createServer(),
sessionStore = new MemoryStore();
app.configure(function () {
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({
store: sessionStore,
secret: 'secret',
key: 'express.sid'
}));
app.use(express.static(__dirname + '/public'));
});
残りはこのチュートリアルからほとんど取られています: http://www.danielbaulig.de/socket-ioexpress/
他のファイルでも同じ問題が発生します。/public/test.html がある場合、呼び出したときに
http://localhost:8201/test.html
この app.get は呼び出されません:
app.get("/test.html", app.authenticateUser, function (req, res) {
console.log("get /test.html");
res.redirect("/test2.html");
});
test.html を削除すると、test2.html に転送されます...
私がリダイレクトしようとしている理由は、ユーザーがログインしていない場合、ユーザーに index.html を開かせたくないのですが、index.html が存在する場合は不可能な login.html に転送したいからです。唯一の「解決策」は、それをクライアント側で実行することです。これはひどいものです。index.htmlをクライアントのブラウザにロードして、彼をlogin.htmlに転送したくありません。私の意見では、サーバーはそれを処理する必要があります。