Angular2在网址中没有哈希值

时间:2017-01-15 14:38:29

标签: html5 angular angular2-routing

现在,我的网站网址看起来像这样,因为我使用的是here

所描述的方法

http://localhost:4200/#/cadastro

是否可以删除网址中的哈希值而不会收到404错误?

编辑:添加了路由器模块

const appRoutes: Routes = [
    { path: '', component: HomeComponent },
    { path: 'cadastro', component: CadastroNoivosComponent },
    { path: '**', component: HomeComponent }
];

export const routing = RouterModule.forRoot(appRoutes);

3 个答案:

答案 0 :(得分:28)

如果您使用的是Angular final,则哈希的原因可能是:

RouterModule.forRoot(yourRoutesHere, { useHash: true })

通过删除可能有所帮助。

RouterModule.forRoot(yourRoutesHere)

或者,如果您在提供者(在NgModule中)使用过:

{provide: LocationStrategy, useClass: HashLocationStrategy}

删除它。

编辑,如果您需要LocationStrategy,请尝试将HashLocationStrategy更改为PathLocationStrategy

{provide: LocationStrategy, useClass: PathLocationStrategy}

有关LocationStrategy的更多信息here

现在我已经看到了关于404问题的路线,您可以尝试更改以下内容

{ path: '**', component: HomeComponent }

为:

{ path: '**', redirectTo: '', pathMatch: 'full' }

有关路由here

的更多信息

同时检查您index.html中是否设置了basehref,如下所示:

<base href="/">

答案 1 :(得分:9)

如果您使用PathLocationStrategy作为描述here,则可以删除网址中的哈希值。

但摆脱404错误需要一些服务器端调整。一种快速简便的方法是将服务器配置为在请求http://yourhost/*格式的任何URL时加载主页。

答案 2 :(得分:3)

创建一个.htaccess文件,将以下代码粘贴到产品服务器上。

RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]