我最近构建了我的第一个Angular 4应用程序,并使用angular-cli为Apache服务器生成生成版本,在Ubuntu终端上使用以下命令:
ng build --base-href / my-new-app / -prod
这就是因为我的服务器包含由apache托管的其他应用程序,这些应用程序位于以下地址:
http://my-server.com/my-other-app
我的app-routing-module看起来像这样:
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { MyComponent } from './my-comp/my-component.component';
const routes: Routes = [
{ path: '', redirectTo: '/my-comp', pathMatch: 'full' },
{ path: 'my-comp', component: MyComponent },
{ path: '**', redirectTo: '/my-comp', pathMatch: 'full'}];
@NgModule({
imports: [ RouterModule.forRoot(routes) ],
exports: [ RouterModule ]
})
export class AppRoutingModule {}
如果我通过 http://my-server.com/my-new-app 访问该应用,它会正确地重定向到 http://my-server.com/my-new-app/my-comp ,如果我使用该应用导航它会很好,但是使用 http://my-server.com/my-new-app/my-comp 在搜索栏上刷新或按Enter键的F5,将我发送到“未找到404”。
在开发上它运行正常,使用 ng serve --host 0.0.0.0 --open ,但它在 localhost:4200 / my-comp 上打开,所以我'猜测它不是真的一样。
我在生产构建中做错了什么,除了第一个路径以外的每个路径都以404错误结束了?
答案 0 :(得分:1)
在root上创建一个.htaccess
文件并将其粘贴到
RewriteEngine On
# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
# If the requested resource doesn't exist, use index.html
RewriteRule ^ /index.html
希望这有帮助。