2017-06-29 16 views
4

角度4のプロジェクトがあり、localhost:4200/route-aから実行するとうまく動作し、ブラウザを更新するとすべて正常に動作します。しかし、私がng buildでビルドし、それをApacheから実行すると、localhost/route-aにナビゲートすると404が返されます。ルーティング用のコードは次のとおりです。角4で配線する方法

imports: [BrowserModule, HttpModule, FormsModule, RouterModule.forRoot([ 
    { path: 'home', component: HomeComponent }, 
    { path: 'route-a', component: RouteAComponent }, 
    { path: '', redirectTo: '/home', pathMatch: 'full' } 
    ])] 
+0

[apacheサーバーを構成する](https://ngmilk.rocks/2015/03/09/angularjs-html5-mode-or-pretty-urls-on-apache-using-htaccess/#thecode)する必要があります。 html5routingを許可する –

+0

これはサーバーのようなルートではないので、htmlテンプレートをロードするルートです。それを有効にしたい場合は、作成したすべてのルートにリダイレクトするようにサーバーを設定する必要があります。 – trichetriche

+0

おかげで私はそれを試してみましょう –

答えて

12

角度の問題ではありません。あなたのApache設定には問題があります。 HTML5モード(pretty url)をAngularで使用している場合、サーバー上のリソースがindex.htmlファイルに存在しないすべての要求を送信するようにApacheを設定する必要があります。その理由は、あなたが/route-aにアクセスしようとすると、Apacheサーバがディレクトリroute-aとのindex.htmlを見つけるためのデフォルト試みになるということです

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 

これは、次の.htaccessの設定を行うことができます内のファイル。しかし、あなたはそのディレクトリを持っていないので、Apacheは404エラーを返します。

しかし、場所やファイルが存在しない要求に対してはApacheに伝えます。 Angular htmlファイルを送信するには、Angularルータがそこから取り出します。

+0

それは完璧に私のために角5で動作します –

関連する問題