我目前正在尝试使用CLI构建部署我的Angular2应用程序,现在这是完美的工作,我正在将dist的内容复制到我服务器根目录下的文件夹中。
现在它运行良好,但是当我在路线上重新加载页面时,它无法运行。经过一些谷歌搜索后,我发现useHash
中的RouterModule.forRoot(routes, { useHash: true })
解决了这个问题。
所以我的问题是:是否有另一种方式,因为我更喜欢漂亮的URL。
答案 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)。