Refreshin 角度构建在 Apache 服务器上显示 404 Not Found 错误

Posted

技术标签:

【中文标题】Refreshin 角度构建在 Apache 服务器上显示 404 Not Found 错误【英文标题】:Refreshin angular build shows 404 Not Found Error on Apache Server 【发布时间】:2019-01-13 08:58:54 【问题描述】:

我正在 Angular 6 中创建 ng build --prod,并将其部署到 Apache 服务器。 构建工作正常,但是当我刷新页面时,它显示“未找到”。 我还在我的根文件夹中创建 .htaccess 文件...

RewriteEngine On  

RewriteCond %DOCUMENT_ROOT%REQUEST_URI -f [OR]  
RewriteCond %DOCUMENT_ROOT%REQUEST_URI -d  
RewriteRule ^ - [L]


RewriteRule ^ /index.html  

【问题讨论】:

看看那个:***.com/questions/18406156/… 【参考方案1】:

您应该阅读说明如何部署 Angular 应用程序的文档:Angular deployment。

路由应用必须回退到 index.html

Angular 应用程序非常适合使用简单的静态服务 HTML 服务器。您不需要服务器端引擎来动态 编写应用程序页面,因为 Angular 在 客户端。

如果应用使用 Angular 路由器,您必须将服务器配置为 在被要求提供文件时返回应用程序的主机页面 (index.html) 它没有。

路由应用程序应支持“深层链接”。深层链接是 URL 指定应用程序内部组件的路径。例如, mysite.com/heroes/42 是英雄详情页面的深层链接 显示 id 为 42 的英雄。

当用户从一个 运行客户端。 Angular 路由器解释 URL 和路由到 那个页面和英雄。

有几个 Web 服务器的配置示例。

【讨论】:

【参考方案2】:

其中一个可能的原因可能是您在子目录中进行部署。

改变这一行

RewriteRule ^ /index.html  

RewriteRule ^ /subDirectoryName/index.html  

希望这会有所帮助。

【讨论】:

您假设他在子目录中提供应用程序,但他从未说过。 我过去曾帮助 2 位 React 开发人员修复 404 问题。两者都在子目录中为应用程序提供服务。我假设与 Angular 相同(在这种情况下)。 你不应该根据过去的情景假设什么。 感谢 Faheem 你猜对了,它真的帮了我很大的忙

以上是关于Refreshin 角度构建在 Apache 服务器上显示 404 Not Found 错误的主要内容,如果未能解决你的问题,请参考以下文章

业务系统容灾高可用系列01-高可用及负载均衡综述

在生产模式下构建角度应用程序时出错

用于 Visual Studio 的 Apache cordova 在构建期间不会更新 iOS 平台文件

Apache构建虚拟Web主机

在服务器端渲染设置后,角度 6 无法在本地工作

实验使用apache构建虚拟主机