基本的に、キャッチオール ルートを使用しres.redirect('/')
、入力した URL に関係なく使用すると、常にインデックス/ホームページがレンダリングされます (つまり、Angular は完全な URL を「参照」していないようです)。ただしres.render('index')
、キャッチオール ルートに配置するとすべて正常に動作します。コードを繰り返したくないので、「/」へのリダイレクトは機能するはずです。おそらくここのどこかで愚かな間違いを犯したので、助けていただければ幸いです。
角度ルーティング:
app.config(function ($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
$routeProvider
.when('/',
{
templateUrl: 'partials/home.jade'
})
.when('/about',
{
templateUrl: 'partials/about.jade'
})
.otherwise( {redirectTo: '/'});
});
これにより、入力時に about ページが正しくレンダリングされますsite-address/about
。
app.get('/', function (req, res) {
res.render('index');
});
app.get('/partials/:name', function (req, res) {
res.render('partials/' + req.params.name);
});
app.get('*', function (req, res) {
res.render('index');
});
これは常にインデックスページだけを表示します:
app.get('/', function (req, res) {
res.render('index');
});
app.get('/partials/:name', function (req, res) {
res.render('partials/' + req.params.name);
});
app.get('*', function (req, res) {
res.redirect('/');
});
それが役立つ場合の設定:
// Configuration
app.configure(function () {
app.set('port', process.env.PORT || 1337);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.static(path.join(__dirname, 'public')));
app.use(app.router);
});