2017-08-12 8 views
1

私は角度(バージョン4.3.3)をヒーローのチュートリアルのツアーに従って学ぶことを試みています。私はきれいなから角度cliプロジェクトを開始し、そこから行った。ルータがangle4でコマンドng build -prodで動作しない

私はTour of Heroesのルーティングシステムを実装しました。それは私がng serveとそれを実行するときにうまく動作しますが、--output-pathng buildを使用して構築し、Apache http:// localhostサーバと同様に動作しますが、ルーティングシステムには影響しませんアドレスバーに貼り付けるとうまくいかない。

私はクリーンな角型cliプロジェクトのすべてのデフォルト設定を使用しています。

たとえば、ダッシュボードリンクをクリックするとヒーローズダッシュボードにアクセスできますが、アドレスバーに同じリンクを貼り付けるか書き込むと機能しません。それは私に"404が見つかりません"を与えます。

問題が見つかりません。私はここに何かを逃していますか

誰かが問題の原因を指摘できますか?

マイフルNGのビルドコマンド:

ng build --prod --aot=false --extract-css=true --output-path "F:\\www\\angular\\heroes" --bh "http://localhost/angular/heroes/" --deploy-url "http://localhost/angular/heroes/" 
+0

「HashLocationStrategy」を使用しようアプリケーションモジュールのプロバイダ配列にこれを追加してください –

+0

/distフォルダまたは/ distの内容のみをコピーしますか? – Vega

+0

実際には、 'ng build'コマンドで' --output-path'オプションを使っているので、コンテンツやdistフォルダをコピーする必要はありません –

答えて

1

ため、デフォルトの角度ルータの使用historyこともできます。 URLは実際にはユーザーのブラウザ内のサーバーにのみ存在しません。そのため、あなたは404状態コードを取得しています。

URLに直接アクセスできるようにするには(フロントページからのリンクをクリックする必要はありません)、リクエストをindex.htmlにリダイレクトするようにサーバー(Apache、Nginx、...)を設定する必要があります。あなたはドキュメントServer configurationにこのすべての(より)を見つけることができます

try_files $uri $uri/ /index.html; 

を試してみてくださいnginxの使用のために

RewriteEngine On 
# If an existing asset or directory is requested go to it as it is 

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR] 

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d 

RewriteRule^- [L] 

# If the requested resource doesn't exist, use index.html 
RewriteRule^/index.html 

:Apacheが書き換えルールを使用するための

0

Apacheサーバーを使用しているので、ルートディレクトリで.htaccessファイルを使用し、その.htaccessファイルにrewrite ruleを追加する必要があります。

アプリは角度ルータを使用している場合、それは持っていないファイル のために尋ねられたとき、あなたは 復帰へのアプリケーションのホスト・ページ(index.htmlのを)サーバーを設定する必要があります。angular docによると、ので。

詳しくはthis linkをご覧ください。

関連する問題