Angular2 CLI部署,useHash

时间:2016-12-08 08:41:24

标签: angular hash deployment build

我目前正在尝试使用CLI构建部署我的Angular2应用程序,现在这是完美的工作,我正在将dist的内容复制到我服务器根目录下的文件夹中。

现在它运行良好,但是当我在路线上重新加载页面时,它无法运行。经过一些谷歌搜索后,我发现useHash中的RouterModule.forRoot(routes, { useHash: true })解决了这个问题。

所以我的问题是:是否有另一种方式,因为我更喜欢漂亮的URL。

1 个答案:

答案 0 :(得分:1)

根据您的服务器,您必须添加重写规则才能将所有内容重定向到index.html页面。它将解决问题。

Apache2中,添加.htaccess

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

IIS

<rule name="AngularJS" stopProcessing="true">
  <match url="[a-zA-Z]*" />
  <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>

另请注意,您可能需要为API路由添加例外(按惯例,/ api)。