2017-12-29 23 views
0

私は私のangularjsアプリ上で次のルートを持っている:私はURL http://localhost:8090/にアクセスした場合奇妙なangularjsルートの挙動

angular.module('index').config(['$routeProvider', '$locationProvider', 
        function indexRouteConfig($routeProvider, $locationProvider) { 

    $locationProvider.html5Mode(true); 

    var routeToUserHomePage = ['$injector', function routeToUserHomePage($injector) { 
     var $location = $injector.get('$location'); 
     //somecode 

     $location.url('/unauthorized'); // this works 
    } 

    $routeProvider 
    .when('/', { 
     templateUrl : 'app/custom/templates/customTemplate.html', 
     controller : 'customTemplateController', 
     resolve  : { routeToUserHomePage: routeToUserHomePage } 
    }) 
    .when('/unauthorized', { 
     templateUrl : 'app/custom/templates/customTemplate.html', 
     controller : 'customTemplateController' 
    }) 
    .otherwise({ 
     resolve : { routeToUserHomePage: routeToUserHomePage } 
    }); 

それは完璧に動作し、Imがunauthorized画面にリダイレクト。

ブラウザにアクセスしてhttp://localhost:8090/unauthorizedと入力すると、エラー404が見つかりませんWebサーバーからが届きました。それは "それ以外の"ルートをヒットしません。ここで何が恋しい?

index.htmlファイルに<base href="/">というタグがあります。

答えて

0

を別のコントローラとテンプレートを作成し、そのコントローラ内部のロジックを記述します。

このモードを使用すると、基本的に、あなたのアプリケーションのエントリポイント(例えば、index.htmlを)へのすべてのリンクを書き換える必要があり、サーバ側でURL書き換えを必要と

サーバー側

出典:AngularJS HTML5 Mode - How do direct links work without server specific changes?

0

あなたがhtml5Modeを有効にして、あなたはそれがサーバー上で必要なものを持っていないため、これは

.otherwise ({ 
    url: '/unauthorized', 
    controller: 'error', 
    templateUrl: 'templateUrl.html', 
}); 

function error($location) { 
// write whatever your logic 
} 
+0

実際にはできません。私はrouteToUserHomePageメソッドでコードを単純化しました。問題は、http:// localhost:8090/unauthorizedと入力してブラウザにEnterキーを押したときに404エラーが表示される場合です。 – gog

+0

@gog –