Angular2路由/深层链接不能与Apache 404一起使用

前端之家收集整理的这篇文章主要介绍了Angular2路由/深层链接不能与Apache 404一起使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在关注Angular 2路由示例。使用“精简”网络服务器,我能够从根和深层链接工作导航,但使用Apache我可以从根导航,但是当跟随链接指向路由时,会获得404 Not Found错误

例如,以下URL对npm由端口3000启动的“lite”Web服务器起作用。

http://localhost:3000/crisis-center/2

但是在端口80上运行Apache的下一个URL失败了。

http://localhost/crisis-center/2
The requested URL /crisis-center/2 was not found on this server.

我确实尝试了一些针对类似Angular 1问题推荐的.htaccess解决方案,但没有运气。如果有人在Apache上有Angular 2路由和深层链接工作,请告诉我你是如何实现的。

@RouteConfig([
{ // Crisis Center child route
path: '/crisis-center/...',name: 'CrisisCenter',component: CrisisCenterComponent,useAsDefault: true
},{path: '/heroes',name: 'Heroes',component: HeroListComponent},{path: '/hero/:id',name: 'HeroDetail',component: HeroDetailComponent},{path: '/disaster',name: 'Asteroid',redirectTo: ['CrisisCenter','CrisisDetail',{id:3}]}
])

Boot.ts

import {bootstrap}        from 'angular2/platform/browser';
import {ROUTER_PROVIDERS} from 'angular2/router';
import {AppComponent}     from './app.component';
bootstrap(AppComponent,[ROUTER_PROVIDERS]);
因为上面的答案并没有真正回答你是否想要它与Apache一起工作的问题。 HashLocationStrategy仍然是一个选项,但如果您希望它在Apache上工作,您需要执行以下操作:

在与index.html相同的位置创建一个新文件.htaccess。以下代码将在里面:

<IfModule mod_rewrite.c>
  Options Indexes FollowSymLinks
  RewriteEngine On
  RewriteBase /crisis-center/
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</IfModule>

(注意,在问题中,index.html内的< base href =“/ crises-center /”>应该与RewriteBase相同)

答案改编自Angular 2 routing and direct access to a specific route : how to configure Apache?的问答

猜你在找的Angularjs相关文章