在角度4,nginx服务器和apache的路由刷新404

时间:2017-09-02 06:58:42

标签: angular

我在Angular 4中创建了一个新组件并添加了它的路径'account'。 当我运行ng serve主页时,会显示一个指向帐户页面的链接。 点击帐户页面链接帐户页面打开。如果我刷新页面,它就可以工作。

问题在于,当我使用ng build进行构建并将构建上传到apache时。如果我点击“帐户”链接,则会打开帐户页面。 但是,如果我直接刷新或尝试开帐户路线,我会收到404错误。

如果我添加'use hash',那么它与'#'一起使用,但我不想要这个。

我正在使用棱角分明4.2.4

4 个答案:

答案 0 :(得分:7)

您可以查看Link如何在Apache上部署Angular应用程序。

如何在apache中提供index.html

  

这可以通过添加.htaccess文件(在index.html所在的同一目录中)以及以下内容来实现。

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

答案 1 :(得分:1)

尝试在nginx配置文件中添加query_string

location / {
    alias /var/www/my_project/dist/;
    index index.html;
    try_files $uri $uri/ /index.html?$query_string;
}

答案 2 :(得分:1)

在后端(服务器端)只是将所有(404)错误/无法识别的请求映射到索引(包括所有角度构建脚本)。然后它返回索引。在前端,你可以得到你需要的东西。它映射到你需要的页面。

例如: - In spring Boot back-end this is an example answer

答案 3 :(得分:0)

只需将其放在根目录下的.htaccess上

    RewriteEngine on

# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# Rewrite everything else to index.html
# to allow html5 state links
RewriteRule ^ index.html [L]