我正在使用angulr4,这是我的URL http://localhost/#/login.html,我想将此URL更改为http://localhost/#!/login.html。我找到了angularjs的解决方案,但没有找到angular4的解决方案。我正在为SEO使用“ Prerender Node”,因为这是链接https://www.npmjs.com/package/prerender-node
预先感谢
答案 0 :(得分:3)
您追求的是APP_BASE_HREF
。在路由模块app-routing.module.ts
中,添加到模块providers
数组{ provide: APP_BASE_HREF, useValue: '!' }
中,并在文件顶部导入import { APP_BASE_HREF } from '@angular/common';
。看来您已经在使用HashLocationStrategy
。
示例 app-routing.module.ts
:
import { NgModule } from '@angular/core';
import { Routes, RouterModule} from '@angular/router';
import { APP_BASE_HREF } from '@angular/common';
const routes: Routes = [
{ path: '**', redirectTo: '404-not-found' }
];
@NgModule({
imports: [
RouterModule.forRoot(routes, {
useHash: true
})
],
exports: [ RouterModule ],
providers: [
{ provide: APP_BASE_HREF, useValue: '!' }
]
})
export class AppRoutingModule {}
进一步阅读Angular 4文档
PathLocationStrategy
是LocationStrategy
,用于配置Location
服务在浏览器的path
中表示其状态 网址。如果您使用的是
PathLocationStrategy
,则必须提供APP_BASE_HREF
或在文档中添加基本元素。该URL前缀将是 在生成和识别URL时保留。例如,如果您提供
APP_BASE_HREF
中的'/my/app'
并致电location.go('/foo')
,浏览器的网址将变为example.com/my/app/foo
。类似地,如果您将
<base href='/my/app'/>
添加到文档中并调用location.go('/foo')
,浏览器的网址将变为example.com/my/app/foo
。
您可以通过提供
HashLocationStrategy
useHash: true
作为一个对象的第二个参数RouterModule.forRoot
中的AppModule
。
...
APP_BASE_HREF
令牌表示要使用的基本href ... 一个字符串,代表生成和识别URL时应保留的URL前缀