2017-09-12 3 views
0

私はかなり良い走っている角度4アプリを持っています。角4ルータ - ページが見つかりませんリダイレクトでエラーが発生しました

私はHashLocationStrategyを使用していますが、私は自分のURLにハッシュを持つことから離れたいと思っています。

私のルータは次のようになり、今...

export const routes: Routes = [ 
    { 
    path: '', 
    component: TilesComponent 
    }, 
    { 
    path: 'profile/:urlUserName', 
    component: ProfileComponent 
    }, 
    { 
    path: 'forBusiness', 
    component: ForBusinessComponent 
    }, 
    { 
    path: 'login', 
    component: LoginPageComponent 
    }, 
    { 
    path: 'editTile/:urlUserName', 
    component: EditTileComponent, 
    canActivate: [AuthenticationService] 
    } 

]; 

export const appRoutingProviders: any[] = []; 

export const routing = RouterModule.forRoot(routes, { }); 

私はこのように生成された私の最初のページからのリンクを持っている設定...

routerLink="/forBusiness" 

それはこれにリダイレクト私はちょうどこのウルをドロップする場合は今のページ...

https://www.tilecase.com/forBusiness

lをブラウザに追加し、forBusinessページだけをロードしようとすると、「ページが見つかりません」というエラーが表示されます。

これを機能させるにはルートまたはページ設定に何をする必要がありますか? LocationStrategy 1. HashLocationStrategyあなたのサーバーは、Apacheは、単にファイルを作成している場合PathLocationStrategy

があなたのroot-module

import {LocationStrategy, PathLocationStrategy} from '@angular/common' 

// add this in provider 
{ provide: LocationStrategy, useClass: PathLocationStrategy } 

でこれを追加する必要がある

2 PathLocationStrategyの2種類があり

+1

あなたは別の 'LocationStrategy'に切り替えたときに、あなたの角度のコードで何かを変更する必要はありませんに従って動作します。ただし、サーバーはHTML5 pushStateをサポートする必要があり、そうするように構成する必要があります。 –

+0

いつものようにありがとう。私はSeoレンダリングのためにNetlifyを使用しています。彼らがそれを提供しているかどうかはわかりません。ハッシュを削除できる他の方法はありますか? –

+0

いいえ、サーバーがHTML5 pushStateをサポートしていない場合、AFAIKの方法はありません。 –

答えて

0

.htaccessの名前を付けてこのデータを貼り付けます

<IfModule mod_rewrite.c> 
    Options Indexes FollowSymLinks 
    RewriteEngine On 
    RewriteBase /myappdirectory/ 
    RewriteRule ^index\.html$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /index.html [L] <--- get the index.html file path starting from public html folder 
</IfModule> 

更新コマンド

保存してからページを更新に応じて、最後の行。幸いにも、あなたのページには、IISサーバーの場合

このリンク

http://jasonwatmore.com/post/2017/02/24/angular-2-refresh-without-404-in-node-iis

+0

よかった、ありがとう。私はそれを試してみましょう。 netify.comでホストされているサイトでこれが動作するかどうかは分かりますか? –

+0

'{useHash:true}'を削除することは 'PathLocationStrategy'を提供することと同じです。 'PathLocationStrategy'がデフォルトです。 –

関連する問題