我有一個目錄結構的角應用在瀏覽器中直接訪問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
負載預期。但是,當我嘗試直接在URL中訪問"/foo/bar"
時,我從Express "cannot GET /foo/bar"
得到404響應,這是有道理的,因爲沒有像express中定義的那樣的路線。但是,我認爲這是定義角度路由器的關鍵。它應該攔截這個請求,並且實際上要求"/partials/foo"
。 我嘗試添加
//redirect all others to the index (HTML5 history)
app.get('*', routes.index);
,但它並沒有解決這個問題,似乎要趕上即使是靜態的js資產的請求,並與index.html
的內容,這是非常糟糕的響應。 我確定我做錯了什麼。我如何解決這些問題以便我可以直接訪問這些網址?
但我試着在服務器上做這個: app.get('*',routes.index);那沒有用。 – algorithmicCoder
我認爲你不能這樣做。如果您使用express,connect-mod-rewrite應該很容易使用。 Express寫在連接之上。 –
但是,這正是在這裏完成的:https://github.com/btford/angular-express-seed/blob/master/app.js,這是標準的Angular參考。爲什麼它在這種情況下工作? – algorithmicCoder