Угловая маршрутизация не работает при прямом посещении URL в браузере, но работает при нажатии на?
У меня есть угловое приложение со структурой каталогов
app
..views
....partials
......main.jade
......foo.jade
....index.jade
и маршруты определены как:
«использовать строгое»;
angular.module('myApp', [
'ngCookies',
'ngResource',
'ngSanitize',
'ngRoute',
'firebase',
'myApp.config'
])
.config(function ($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
$routeProvider
.when('/', {
templateUrl: '/partials/main',
controller: 'MainCtrl'
})
.when('/foo/:fooName', {
templateUrl: '/partials/foo',
controller: 'FooCtrl'
})
.otherwise({
redirectTo: '/'
});
});
Я использую экспресс на стороне сервера, и соответствующий код:
// server.js
app.configure('development', function(){
app.use(express.static(path.join(__dirname, '.tmp')));
app.use(express.static(path.join(__dirname, 'app')));
app.use(express.errorHandler());
});
app.configure('production', function(){
app.use(express.favicon(path.join(__dirname, 'public/favicon.ico')));
app.use(express.static(path.join(__dirname, 'public')));
});
app.get('/', routes.index);
app.get('/partials/:name', routes.partials);
//routes.js
exports.index = function(req, res){
res.render('index');
};
exports.partials = function(req, res){
var name = req.params.name;
res.render('partials/' + name);
};
Основной маршрут"/"
загружается нормально, и когда я нажимаю на"/foo/bar"
частичный видfoo.jade
загружается как положено. Тем не менее, когда я пытаюсь посетить"/foo/bar"
прямо в URL я получаю 404 ответа от Express"cannot GET /foo/bar"
что имеет смысл, поскольку в Express нет такого маршрута, как этот. Тем не менее, я думал, что это был весь смысл определения углового маршрутизатора ... т.е. он должен перехватить этот запрос и на самом деле попросить"/partials/foo"
, Я пытался добавить
//redirect all others to the index (HTML5 history)
app.get('*', routes.index);
но это не решило проблему и, похоже, перехватывало даже запросы на статические js-ресурсы и отвечало содержимымindex.html
что довольно плохо Я уверен, что я делаю что-то не так. Как я могу исправить вещи, чтобы я мог непосредственно посетить URL-адреса?