【问题标题】:404 return doesn't work when refresh with nginx and angular使用 nginx 和 Angular 刷新时 404 返回不起作用
【发布时间】:2017-12-11 10:39:09
【问题描述】:

我将 nginx 与 Angular 一起使用,并希望在用户转到页面 /error404 时返回 404 我用角度路由模块做了重定向:

{ path: 'error404', component: PageNotFoundComponent},
{ path: '**', redirectTo: 'error404', pathMatch: 'full'}

并使用 nginx 返回 404,我在 conf 文件中尝试:

error_page 404 /error404;
location  /error404 {
 internal;
}

或者只是:

error_page 404 =301 /error404;

当我直接转到 /error404 时,我得到一个 404 not found 而不是我的页面,但是当我使用带有随机 url 的角度重定向时,我在 /error404 上运行良好并打印我的页面

【问题讨论】:

    标签: angular redirect nginx http-status-code-404


    【解决方案1】:

    尝试在下面添加此信息:

    location / {
            try_files $uri $uri/ /index.html;
    
            proxy_set_header HOST $host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    

    【讨论】:

      【解决方案2】:

      Angular 路由器不会重定向到 url,而是重定向到给定的组件。

      您应该创建一个组件来处理 404 页面,它还可以通过不请求它来节省网络服务器负载。

      更多信息请参见:https://angular.io/guide/router#wildcard-route

      【讨论】:

      • 但这不是我用这个做的:我的组件处理 404 { path: 'error404', component: PageNotFoundComponent} 而这个重定向 { path: '**', redirectTo: 'error404' , pathMatch: 'full'} ?
      • 我尝试使用hashUrl 进行重定向,因此您最终会得到如下路线:http://your.server/#/error404
      • 这是您面临的问题 :) stackoverflow.com/q/40150393/7376078
      • 对不起,我看不出它对我有什么帮助:(我的问题是当我直接转到 /error404 时,我有一个 404 not found nginx 但是当我转到我网站的随机 url 时重定向到 /erro404 效果很好并打印我的页面
      • 请给我记录这两个不同的网址。一个由angular驱动,另一个由nginx驱动。
      猜你喜欢
      • 1970-01-01
      • 2019-10-06
      • 2021-06-05
      • 2020-09-07
      • 2015-06-22
      • 2017-11-15
      • 2020-07-21
      • 2015-04-20
      • 1970-01-01
      相关资源
      最近更新 更多