2016-07-28 7 views
0

anglejs ngRouteを使用して1ページのアプリケーションをルーティングしています。 localhost/aboutまたはlocalhost/blogを表示します。 私はリアロードすると、「GET/about」できません。どうしたらいいですか?ngRouteのページを更新するときにページが見つかりません

ルーターの設定は以下のとおりです。

var myApp = angular.module('myApp',['ngRoute']); 
myApp.config(['$locationProvider','$routeProvider',function($locationProvider,$routeProvider){ 
    $locationProvider.html5Mode(true); 
    $routeProvider 
     .when('/',{ 
      templateUrl: 'views/pages/home.html', 
      controller: 'homeCtrl' 
     }) 
     .when('/about',{ 
      templateUrl: 'views/pages/about.html', 
      controller: 'aboutCtrl' 
     }) 
     .when('/contact',{ 
      templateUrl: 'views/pages/contact.html', 
      controller: 'contactCtrl' 
     }) 
     .when('/blog',{ 
      templateUrl: 'views/pages/blog.html', 
      controller: 'blogCtrl' 
     }) 
     .otherwise({redirectTo: '/home'}); 
    }]); 

私は角度を使用しています。理由コード

falseに設定
$locationProvider.html5Mode(true); 

のこの作品のだ

+0

バックエンドはすべてのリクエストを受け取り、Angularアプリケーションを提供する必要があります。 – str

+0

「私は角を使用しています」と言いましたが、コードが動作していないJSFiddelまたはPlunkerの例を提供できますか? –

答えて

0

は、各URLの先頭に#が追加されますので、サーバはあなたがリロードされているページに関係なくインデックスページを提供します。

+0

マイページURLは#タグなしで表示する必要があります。#タグなしでページをルーティングする別の方法があります。 – Sathish

0

AngularJSルーティングではなく、サーバールーティングを使用している可能性があります。 AngularJSはデフォルトでURLをルーティングするために#の後のルートを使用します。例えば、http://localhost:8080/#/about

さらに、$locationProvider.html5Mode(true)のHTML5ルーティングでは、http://localhost:8080/aboutを使用していると思われるルーティングを使用できます。

+0

はいhttp:// localhost:8080/aboutのようなURLを表示するために、$ locationProvider.html5Mode(真)を使用しています。私は#タグを表示しない同じものが欲しい。 html5モードでページをロードする他の方法はありますか? – Sathish

+0

エラーの詳細をお知らせください。ブラウザのバージョン、問題を複製するPlunker ... http://caniuse.com/#search=historyを見て、互換性のあるブラウザを見てください。 – Ruben

+0

URLを確認してくださいhttp://sathishstar.netai.net/home – Sathish

0

AngularJSルーティングについてのドキュメントはあまり明確ではありません。それはHashbangとHTML5モードについて語っています。実際には、ルーティングは3つのモードで動作しAngularJS:

  • Hashbangモード
  • はHTML5モード
  • HTML5モードでHashbang

をあなたによってサポートされていないHTML5モードを使用しているためですブラウザ。上記@Mumpoで述べたように。

あなたはこのラインこのラインに

$locationProvider.html5Mode(true); 

を変更する必要があります

$locationProvider.html5Mode(false); 

このHashbangモードが有効になり、さらにお使いのURL

を前に#記号を付加しますこれらの3つのモードに関する深い知識。これを参照してくださいStackoverflow質問here。これが役に立ちますようにお願いします。

+0

実際には私はhtml5モードが欲しいです。私はhttp://www.example.com/base/pathのようなURLを表示したい。 hasbangメソッドを使用せずに、ページをロードできますか? – Sathish

+0

私たちが実際に使用した3つのアプリケーションは、ハッシュバーンモードです。しかし、私たちはきれいなURLを使用したいと思ったところで、それらのプロジェクトでAngularJsでMVCを使用しました。 ** example.com/base/path **などのURLを表示し、AngularJs経由で作業するために、MVCルートを使用してルーティングを処理しました。 MVCを使用したい場合は、私はそのロジックをあなたと共有することができます –

+0

AngularJsのみを使用する場合は、この[link](https://scotch.io/tutorials/pretty-urls-in-angularjs-removing-the-hashtag)を参照してください。それはあなたを助けるかもしれません。すべてのルートを定義し、ベースURLを追加するだけです。それが助けてくれることを願う –

関連する問題