现在,我的网站网址看起来像这样,因为我使用的是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);
答案 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]