2016-12-21 6 views
0

私は新しい角度です。私は私のプロフィールを表示するためのブログを作成します。私のウェブサイトで 、私はいくつかのコンポーネントを持っていると示されているように私app.moduleは、ルーティングのための構成を有している:ここではAngular 1.5を使用してSPAを正しくルーティングする方法は?

app.config(function($locationProvider, $routeProvider){ 
    $locationProvider.html5Mode({ 
    enabled:true, 
    requireBase: false 
    }) 

    $routeProvider. 
    when("/", { 
     template: "<research-overview></research-overview>" 
    }). 
    when("/research-interests", { 
     template: "<research-interests></research-interests>" 
    }). 
    otherwise({ 
     redirectTo: "/" 
    }) 
}); 

は私のコンポーネントの例です:

angular.module('researchOverview', []) 
    .component('researchOverview', { 
    templateUrl: '/templates/research-overview.html', 
}); 

私はローカルに試してみましたpython -m SimpleHttpServer を使用してサーバーを実行し、ブラウザを使用して自分のローカルWebサイトにアクセスしてlocalhost:8000にアクセスできるようにします。ホームページからリンクをクリックすると、ページが正しく読み込まれます。ただし、最初に別のURL(例:localhost:8000/testing)を使用してウェブサイトにアクセスすると、角度のルートが正しく動作しないように見えます。 は、私はそれらのURLは私のホームページにリダイレクトすることができるように、私はルータを設定するにはどうすればよい

enter image description here

、代わりにこのエラーが出ますか?

+1

Python SimpleHttpServerで 'html5Mode'を使用することはできません。独自のサブクラスを書く必要はありません。 https://gist.github.com/RyanBalfanz/ee579e5dec2d843acff1646943d7e96b – Claies

+0

ああ!問題はsimpleHttpServerにありますか?この –

+0

のおかげで、ユーザーがタブをブックマークして再開できるように、そのようなURLを表示したい場合は「本当の」URLを使用する必要があります。つまり、あなたはあなたがURLを提供するすべての場所で実際のページが必要です。これは一般的なエラーページになることがあります。または、サーバーと連携して最終的なコンテンツをサーバーし、SEOを強化することができます。 – dandavis

答えて

0

html5モードが有効になっていると、パスに関係なくindex.htmlファイルを返すようにサーバーを設定する必要があると思われます。

たとえば、サーバーがlocalhost:8000/testingでリソースの要求を受信すると、index.htmlが返されます。 AngularJSドキュメントから

:このモードを使用して

は基本的に、あなたのアプリケーションのエントリポイント (例えばindex.htmlを)にすべてのリンクを書き換える必要があり 、サーバ側でURL書き換えを必要とします。アプリケーションベースである URLの部分と処理されるべきパスとを区別することができるので、この の場合には、タグを要求することも重要です。

+0

どうすればいいですか? –

+0

私はちょうどいくつかの情報で私の答えを更新しました。私はpythonを自分で使用していないので、残念ながら仕様を提供することはできません。 – Teppic

関連する問題