Angular Routing funktioniert nicht, wenn die URL direkt im Browser aufgerufen wird, aber wenn darauf geklickt wird?

Ich habe eine eckige App mit einer Verzeichnisstruktur

app 
..views
....partials
......main.jade
......foo.jade
....index.jade

und Routen definiert wie:

'use strict';

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: '/'
      });
  });

Ich benutze Express auf der Serverseite und der relevante Code ist:

    // 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);
    };

Die Hauptroute"/" lädt gut und wenn ich klicke"/foo/bar" die Teilansichtfoo.jade lädt wie erwartet. Allerdings, wenn ich es versuche zu besuchen"/foo/bar" Direkt in der URL erhalte ich eine 404-Antwort von Express"cannot GET /foo/bar" Das macht Sinn, da im Express keine solche Route definiert ist. Ich dachte jedoch, dies sei der springende Punkt bei der Definition des Winkel-Routers. Es soll diese Anfrage abfangen und tatsächlich danach fragen"/partials/foo". Ich habe versucht hinzuzufügen

//redirect all others to the index (HTML5 history)
app.get('*', routes.index);

Aber es hat das Problem nicht gelöst und schien sogar die Anfragen nach statischen Ressourcen aufzufangen und mit dem Inhalt von zu antwortenindex.html Das ist ziemlich schlimm. Ich bin sicher, dass ich etwas falsch mache. Wie kann ich Fehler beheben, damit ich die URLs direkt aufrufen kann?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage