2016-05-06 9 views
0

emberクイックスタートチュートリアルアプリを使用しています。すべてがローカルでうまく動作しますが、テスト環境にデプロイすると、すべてのリソースをロードする際にアプリケーションが404実行されます。Emberルーティングの非ルートドメイン

私が出て、どこかのサブフォルダに展開していますし、明らかに燃えさしではなく、サブフォルダの、ルートドメインに対してそれを見つけようとしている

例: http://example.com/embertest/index.html 資産フォルダがhttp://example.com/embertest/assets/の下に明らかですが、負荷にそれをしようとしていますhttp://example.com/assets/が存在しません

この場合、どのように相対パスを使用できますか?

アップデート1

した後、私はenvironment.jsを編集ENV.baseURL属性 を私はENV.baseURL = '/website/dist/';を追加if(environment === 'production')ブロックでは、明らかに私は燃えさしビルド--env生産を構築していますしようとしたいくつかのグーグル

私はルートに直接行くとき同じ404を得るが、現在もindex.htmlでエラーが発生しているUncaught UnrecognizedURLError: /index.html

私は '/ website/dist /'、 'website/dist /」、 '/ウェブサイト/ distの' だけでなく

アップデート2

私は今もPRODビルドした後、私のindex.htmlに<base href="/website/dist/">を編集し、手動で試してみました。 1

+0

あなたの 'Router.map()'はどのように見えますか?それとも、チュートリアルアプリ(リンク?)から変更されていないのですか? – Thernys

+0

'ember new'と 'ember generate route'から変更されていません。私の答えごとにENV.locationTypeをハッシュに変更することで、全面的な問題は解決しました。今は完璧に動作していますが、私はその理由を理解できません。 –

答えて

0

オーケー更新からと同じエラーが私はenvironment.jsでENV.locationType = 'hash'を変更することでこれを解決し まだあなたが理解する必要があり、これはハックを少し感じているようで何が起こっているかの説明...

+0

これは、私がemberアプリケーションを導入するための標準を集めたものではありません。 –

1

を大好きです通常のWebサーバーフォルダーにemberアプリケーションを置くことはできません。 Emberは履歴のAPIを使用してルート変更を行う際にURLを変更しますが、Webサーバーが直接フェッチされたときにWebサーバーが展開する内容を制御することはできません。

index.htmlhttp://example.com/app/index.htmlに設定すると、Webサーバーは通常http://example.com/app/またはhttp://example.com/app/index.htmlを開いたときにのみこのファイルを展開します。しかし、経路fooの場合、あなたのURLはhttp://example.com/app/fooであり、あなたのWebサーバーは存在しない直接のfooを探しています。だからあなたはあなたのウェブサーバを設定しなければならないので、あなたのindex.htmlであなたがイメージ、jsまたはcssファイルのような別の既存のリソースを要求していないなら、常にそれに応答してください!

これを行う方法は、ウェブサーバーによって完全に異なります。

アセットをフルルート相対パスで入力し、rootURLを指定すると、ルータがあなたのパスとルーティングの開始部分を知るようになります。

あなたはではありません。を使用してください。baseURLこれは今後の廃止予定です。

あなたは本当にこれをお読みくださいreally new blog post

ヒストリーAPIの使用を防止するためにENV.locationType = 'hash'を使用することは、常にオプションですが、間違いなく醜いものです。

+0

詳細な返信をありがとう@Lux;しかし、これはちょうど面白い設定(またはその制御)のない空白の小塊でホストされているだけです。私がlocationTypeハッシュに変更したら、それはすべて正しく動作しています。これには欠点がありますか?それはindex.html#/ routeNameを提供し、ブラウザの履歴や直接のナビゲーションやブックマークにも問題ないと思われます。 –

+0

@ JoshuaOhana私はあなたが何とかそれを制御できると確信しています。あなたが持つ可能性のある最大の欠点はSEOですが、SEOのためには他の最適化も必要です。 – Lux