Nginx: Return 301 Redirect When 404 Error



每当我的域出现404错误时,我想做什么,自动301到主页。

我有很多旧的博客文章和类似的链接,但我的博客上没有它们,如果有人碰巧从另一个网站点击,他们就会被踢到主页。

如何在nginx内部完成此操作?

 server {
        listen             12680;
        root       /home/noahc/webapps/nginx/html/noahc/;
        server_name    www.noahc.net, noahc.net;
        error_page 404 @foobar;
        location @foobar {
                rewrite  .*  / permanent;
                }
         }

有一种更快的方法:

error_page 404 = @foobar;
location @foobar {
  return 301 /;
}

我所说的"更快"是指通过使用return而不是rewrite来"在web服务器内没有无用的regexp匹配"。

这应该有效:

error_page 404 = @foobar;
location @foobar {
    rewrite  .*  / permanent;
}

这是我使用webpartition的最终解决方案。

server {
        listen             12440;
        root       /some/path/here/nginx/html/noahc/;
        server_name    www.domain.net, domain.net;
        port_in_redirect off;
        location /{
            error_page 404 =  @foobar;
        }
        location @foobar {
            rewrite  .*  / permanent;
        }    
 }

error_page设置已经可以为您做到这一点:

error_page 404 =301 http://example.com/;

最新更新