1

我已经成功创建并运行了一个 angualr2-cli 应用程序。我还在 apache 服务器上部署了应用程序,为此我使用了 angular2-cli 命令的帮助ng build

但是我的应用程序在刷新子页面时出现故障(404 Page Not Found Error)。

请执行以下步骤,您将意识到我提到的问题。

  1. 点击此链接加载网页

  2. 现在单击作业侧栏菜单或任何或侧栏元素

  3. 然后刷新页面

你会看到我的问题。页面消失并显示 404 错误。为什么在部署到 apache 服务器后会发生这种情况。当我使用命令运行服务器时,刷新非常适合开发环境(http://localhost:4200 )ng serve

4

2 回答 2

2

我已按照本指南解决了此问题。这在我的配置中没有错。问题是在服务器设置上添加 .httaccess 并允许重写规则。

我总结了我为解决此问题所做的步骤。

  1. 我在 index.html 所在的位置添加了 .httaccess 文件。

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

2.然后允许在apache服务器上使用rewite modsudo a2enmod rewrite

3.重启apache服务器service apache2 restart

4.然后打开文件并在标签/etc/apache2/sites-enabled/000-default.conf上添加以下规则<VirtualHost>

<Directory "/var/www/html">
   AllowOverride All
</Directory>

就是这样!!任何链接都重定向到我的 index.html 并且有效。因为所有路由都是从 angular2 路由中的 index.html 路由

于 2016-12-16T12:31:14.297 回答
0

这是IIS服务器的解决方案

  1. 创建包含以下内容的 web.config 文件:

     <!-- configure the site to work with HTML5 push state -->
    <rewrite>
      <rules>
        <rule name="AngularJS Routes" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
          </conditions>
          <action type="Rewrite" url="/" />
        </rule>
      </rules>
    </rewrite>
    

  2. 将此文件放在您的根部署文件夹中。

于 2017-05-03T08:45:19.177 回答