2017-09-15 15 views
-1

私は特にシングルページアプリとanglejsに関連する簡単な問題を解決しようとしています。確かにこれを行う簡単な方法でなければならないと思います。非ベースURLからangularjsアプリを起動

まずは、単一のページ以外のアプリの仕組みを考えます。たとえば、root内にindex.htmlファイルがあり、その中にother.htmlを持つotherというサブフォルダがあるとします。ブラウザでmysite.com/を起動すると、デフォルトでindex.htmlが提供され、すべて正常に動作します。 mysite.com/other/other.htmlを起動すると、other.htmlが実際のファイルであり、サポートされているリソースファイルなどがすべて含まれているため、正常に動作します。

ここでは、 ui-router。私は経路を作成する:state = other、url =/other、テンプレート= other/other.html、コントローラー付き

mysite.comを起動した場合。これは、角度index.htmlファイルを読み込むと、私は期待どおりホームページを取得します。私はその後、ブラウザに移動してmysite.com/#/otherと入力すると、正常にother.htmlページが正常にロードされます

私はmysite.com/otherに直接アプリを起動したいときに問題が発生します。最初に私が遭遇する問題は404です。なぜなら、他のディレクトリがあってもそこにはindex.htmlがなく、other.htmlファイルはテンプレートだけなので、アプリケーションを実行するのに必要なリソースがロードされないからです。

どうやらサーバーは角型アプリケーションの場合、最後にリソースファイル名のないURLがあれば、index.htmlを読み込み、角度ルータに実際のページを提供させる必要があることを知る必要があります。

私はサーバーでこれを試してみました。あなたがurl mysite.com/otherをリクエストしたときにindex.htmlを返しました。これは角型アプリの読み込みには成功しますが、驚いたことに、mysite.com/otherにはURLにmysite.com/other#/が表示されます。言い換えれば、ベースURLの一部として他のものを扱うようになりました。他のページを表示するには/ other(つまりmysite.com/other#/other)と入力する必要があります。

ベースタグとhtml5modeを使用してさまざまな実験を試みましたが、まだ適切な解決策を見つけることができません。

+0

ここでは何を達成しようとしていますか? mysite.com/otherをmysite.com/#/otherにリダイレクトするにはどうすればよいですか? – yesIcan

+0

ある意味ではい。私はユーザーがリンクmysite.com/otherを保存して、ほとんどのウェブサイトでできるようにそのページにアプリを起動できるようにしたい。 – smjhunt

+0

これを試すhttps://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/creating-rewrite-rules-for-the-url-rewrite-module – yesIcan

答えて

0

解決策を見つけたようです。ベースURLを/に設定し、html5modeをオンにします。また、最後にファイルがない(つまり、拡張子なしの)リクエストに対してindex.htmlを返すようにサーバを設定する必要があります。

関連する問題