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

Url Nginx:404错误时返回301重定向,url,redirect,url-rewriting,nginx,Url,Redirect,Url Rewriting,Nginx,每当我的域名出现404错误时,我想做的就是自动将301发送到主页 我有很多旧的博客帖子,这些都是链接到的,但是我在博客上没有这些帖子,如果有人碰巧从另一个网站点击,他们就会被踢到主页上 如何在nginx中实现这一点 server { listen 12680; root /home/noahc/webapps/nginx/html/noahc/; server_name www.noahc.net, no

每当我的域名出现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 {
    rewrite  .*  / permanent;
}

这是我使用WebPosition得到的最终解决方案

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 404 = @foobar;

location @foobar {
  return 301 /;
}

“更快”是指“在web服务器内没有无用的regexp匹配”,使用而不是重写。

错误页面设置可以为您做到这一点:


错误\u第404页=301http://example.com/;

我在noahc.net上有此设置。例如,每当我键入某个内容时,就会被发送到mediacom dns错误页面。有什么想法吗?我重新启动了nginx。当访问上述链接(不存在的链接)时,我发现
404找不到nginx/1.0.6
,这可能是您(客户端)的问题?无论如何,这不意味着它工作不正常吗?我不应该得到重定向部分和301错误或否?是的,它不工作的权利,你应该得到重定向。请发布您的
服务器{..}
块,可能是其他原因阻止了它的工作。这似乎不是正确的服务器{}块,因为您的网站运行在端口80上,而不是12680上(
侦听12680;
)。否则这个方块看起来不错,应该可以用。太棒了,我喜欢它