2016-08-03 21 views
2

でページの更新に取り組んでいない、私はリフレッシュすると、しかしthis question角度2ルーティングが更新@角度/ルータと角度2 RC 4を使用してApache

に答えを使用してブラウザに表示するルートのURLを得ましたデフォルト以外のルートを持つページを直接リクエストすると、必要なルーティング済みのページではなく、デフォルトのページ(index.htmlをリクエストしたかのように)になります。 Apache 2.4でページをリフレッシュしてAngular 2ルートを正しく動作させるにはどうすればよいですか?

ルートおよびブートストラップ:index.htmlをで

const routes: RouterConfig = [ 
{ path: '', redirectTo: 'dashboardTab', terminal: true }, 
{ path: 'dashboardTab', component: DashboardComponent }, 
{ path: 'missionTab', component: MissionComponent, children: childRoutes }]; 

bootstrap(NavbarComponent, [disableDeprecatedForms(), provideForms(), provideRouter(routes), {provide: Window, useValue: window}, HTTP_PROVIDERS, ResponsiveState, {provide: PLATFORM_DIRECTIVES, useValue: RESPONSIVE_DIRECTIVES, multi: true}]).catch((err: any) => console.error(err)); 

ベースのhref: <base href="/">

+0

達成しようとしていることを示すコードを示してください。 'index.html'の' 'タグ、' bootstrap(...) '、... –

+0

@GünterZöchbauerDone。私はlite-serverで自分のコードを実行すると、ページリフレッシュのルーティングが機能するので、コードを追加することは当初は関連しているとは思わなかった。それは私のApacheサーバー上で動作していないようです。 – bomberblue

+0

'terminal:true'は、最新のバージョンで' pathMatch: 'full''にする必要があります。 lite-serverで動作し、Apacheで動作しない場合、ApacheはHTML5 pushStateをサポートするように設定されていません。それを確認するために 'HashLocationStrategy'に切り替えることができます。これが機能する場合は、サーバー構成の問題です。 –

答えて

0

のapache2のバーチャルホストでのコードを使用します。

<Directory /var/www/html/yourproject> 
    Options Indexes FollowSymLinks 
    RewriteEngine On 
    RewriteBase /yourproject 
    RewriteRule ^index\.html$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /yourproject/index.html [L] 
</Directory> 

、インデックス内のコードを使用します。 html

<script>document.write('<base href="' + document.location + '" />');</script> 

これが解決します。