Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs ng内置Angular 2 Cli应用程序构建后,刷新显示404错误_Angularjs_Apache_Angular2 Cli - Fatal编程技术网

Angularjs ng内置Angular 2 Cli应用程序构建后,刷新显示404错误

Angularjs ng内置Angular 2 Cli应用程序构建后,刷新显示404错误,angularjs,apache,angular2-cli,Angularjs,Apache,Angular2 Cli,我已成功创建并运行angualr2 cli应用程序。我还将应用程序部署在apache服务器上,为此,我使用angular2 cli命令ng build 但是我的应用程序在刷新子页面时关闭(404页面未找到错误) 请执行以下步骤,您将意识到我提到的问题 现在单击作业侧栏菜单或任意或侧栏元素 然后刷新页面 你会看到我的问题的。页面消失,显示404错误。为什么在部署到apache服务器后会发生这种情况。当我使用ngserve命令运行服务器时,刷新可以在开发环境()上完美工作,我已经解决了以下问题。这

我已成功创建并运行angualr2 cli应用程序。我还将应用程序部署在apache服务器上,为此,我使用angular2 cli命令
ng build

但是我的应用程序在刷新子页面时关闭(404页面未找到错误)

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

  • 现在单击作业侧栏菜单或任意或侧栏元素

  • 然后刷新页面


  • 你会看到我的问题的。页面消失,显示404错误。为什么在部署到apache服务器后会发生这种情况。当我使用
    ngserve
    命令运行服务器时,刷新可以在开发环境()上完美工作,我已经解决了以下问题。这在我的配置中没有错。问题是在服务器设置中添加.httaccess和允许重写规则

    我总结了解决此问题的步骤

  • 我在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>
    

    就这样!!任何链接都会重定向到my index.html并正常工作。因为所有路由都是从angular2路由中的index.html路由

    ,所以这里有一个IIS服务器的解决方案

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

    
    

  • 将此文件放在您的根部署文件夹中

  • 摘录自Yeah的基本思想是服务器根据文件加载路由,但您的整个angular应用程序都在index.html上运行,它告诉浏览器要显示哪个路由,因此使用htaccess,您几乎可以将所有服务器传入的流量路由到index.html,并且运行平稳:)
    <Directory "/var/www/html">
       AllowOverride All
    </Directory>
    
     <!-- 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>