【问题标题】:angular 4 deployment package refreshing error server in apache serverangular 4部署包刷新apache服务器中的错误服务器
【发布时间】:2017-11-22 06:14:50
【问题描述】:

目前,我的 Angular 应用在​​ 'http://localhost' 根或索引页面中运行 apache 服务器,但是当刷新内页 'http://localhost/dms-data/summary-of-findings' 时显示浏览器

未找到

在此服务器上未找到请求的 URL /dms-data/summary-of-findings。


Apache/2.4.9 (Win32) PHP/5.5.12 服务器在 localhost 端口 80

我的浏览器中的这条消息 我的 index.html 基本 href 是

<base href="http://localhost/">

【问题讨论】:

标签: angular apache


【解决方案1】:

您可以在项目目录中创建 .htaccess 文件并将此代码放入您的 .htaccess 文件中

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

您可以检查在 apache 服务器 Deploy step 上部署 Angular 构建的所有步骤

【讨论】:

  • 我在 index.html 文件附近的根目录中创建了 .htaccess 文件,但它不起作用。
【解决方案2】:

这是因为您使用 HTML pushState 作为定位策略,因此当您从浏览器刷新时,浏览器会将您的路由页面的请求发送到 apache 服务器。由于 apache 服务器显示 404 错误,因此无法通过 Angular 了解此内部路由。

对此有两种可能的解决方案:

  1. 将后备页面定义为 index.html:您需要在服务器中进行配置,因此发送到您服务器的任何未知页面请求(即您的路由请求)都将被重定向到你的主要 html 即。 index.html(See this link 用于配置您的服务器)

  2. 使用基于哈希的定位策略:使用此策略您不需要任何服务器配置。此外,您的路由页面 URL 将类似于 localhost/#/route1。如果您正在建立一个网站,那么它也可能会妨碍 SEO。 (See this link 了解更多信息)

【讨论】:

    猜你喜欢
    • 2017-08-19
    • 2020-08-29
    • 2018-05-02
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 2022-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多