0

我有一个运行良好的 Angular 4 应用程序。

我一直在使用 HashLocationStrategy,但我决定不再在我的网址中使用哈希。

我的路由器设置现在看起来像这样......

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

现在,如果我只是将此 url 放入浏览器并尝试单独加载 forBusiness 页面,我会收到“找不到页面”错误。

我需要对我的路线或页面设置做些什么才能使其正常工作?

4

1 回答 1

0

有两种类型LocationStrategy 1. HashLocationStrategy 2. PathLocationStrategy

你需要PathLocationStrategy

将此添加到您的root-module

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

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

如果您的服务器是 apache,只需创建一个名称为.htaccesspaste this data的文件

 <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

于 2017-09-12T15:30:50.610 回答