2013-07-21 13 views
48

AngularJSアプリ内のすべてのルートにベースURLを追加することはできますか?基本的にサーバー上の場所を変更しています(意味があれば.../'を介してではなく'/something/'経由でアクセスされます)。ngRouteすべてのルートのベースURLを設定しました

コンテキストを追加するには、ログインに成功した後にアドレスhttp://mysite/secureにアクセスするように、既存のAngularアプリを認証の背後に配置しようとしています。

問題は(サーバーは明らかに正しいページをアップに役立つだろう)私はhttp://mysite/secureでアプリをロードするようにした場合、それが正常に動作しているが、任意のリンクをクリックすると、http://mysite/#newpage代わりのhttp://mysite/secure/#newpageにページのリロードやルートにつながります。

すべてのルートとリンク要素に/ secure /を追加しないとこれは可能ですか?乾杯、それがうまく言われていない場合はごめんなさい。

+0

可能複製(http://stackoverflow.com/questions/17319715/how-to-set-root-location- [AngularJSルータのルートの場所を設定する方法?] for-angularjs-router) –

答えて

37

HTML5タグ<base>を設定すると役立ちます。ドキュメントhereから:

相対リンク

<base href="/my-base">を)あなたは、あなたのメインのHTMLファイルの先頭にあるURLベースを指定する必要がありますいずれかなど、すべての相対リンク、画像、スクリプトを確認してくださいアプリケーションのルートとは異なることが多い文書の最初の絶対URLを使用して相対URLが絶対URLに解決されるため、どこでも絶対URL(/で始まる)を使用する必要があります。

ドキュメントルートからヒストリーAPIを有効にしたランニングアングルアプリは、すべての相対リンクの問題を処理するため、強くお勧めします。

+1

タグを設定しようとしましたが、動作させることができませんでした。上記の2番目の段落に基づいて、私のケースではすべてのリンクを更新するために必要な作業ではない場合、追加のルート値を含めると「グローバル」ベースURLを設定しようとするよりも良いと結論できますか? – adamK

+0

すべてのリンクを更新するには、有用である可能性があります。グローバル定数は、角で宣言され、すべてのページでアクセス可能です。 http://stackoverflow.com/a/17505414/574147 –

+0

私はを持っています。しかし、私は追加のリファレンスを追加したので、次のようにインポートを行っています。 import {FileUploadModule} from 'primeng/fileupload'; Visual Studioですべて動作するようですが、実行時には GET http:// localhost:59911/src/primeng/fileupload 404(見つかりません) これはベースタグのためですか? importを取得してベースタグを無視し、node_modulesを参照するだけの方法はありますか? – Mike

36

ベースhrefの場所には、末尾に/が必要です。たとえば、

<base href="location" /> 

は機能しません。これは、この形式で指定する必要がありますの

<base href="location/" /> 
+16

''両方のスラッシュが必要です。 –

+1

@VictorPiousbox "/ location /"をbaseUrlとして使用すると、アプリケーションで$ cookieStoreが機能しなくなりました(ページの更新時にクリアされるように)。 "location /"を使って作業しました。理由は分かりません。 –

+2

@yngvar、私はいくつかのURLの書き換えを行うApache2プロキシの背後にある私の角のあるアプリを保ちます、おそらくそれが理由です。 –