Nginx:404错误时返回301重定向

时间:2012-02-05 08:09:21

标签: url redirect url-rewriting nginx

每当我的域名出现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;
                }
         }

4 个答案:

答案 0 :(得分:18)

通过它有一个更快的方法:

error_page 404 = @foobar;

location @foobar {
  return 301 /;
}

“更快”是指“使用return而不是重写”,“在Web服务器内部没有无用的正则表达式匹配”。

答案 1 :(得分:13)

这应该有效:

error_page 404 = @foobar;

location @foobar {
    rewrite  .*  / permanent;
}

答案 2 :(得分:12)

这是我使用webfaction工作的最终解决方案。

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;
        }    
 }

答案 3 :(得分:7)

error_page设置可以为您完成此操作:

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