Nginx:404错误时返回301重定向
Posted
技术标签:
【中文标题】Nginx:404错误时返回301重定向【英文标题】:Nginx: Return 301 Redirect When 404 Error 【发布时间】:2012-02-27 04:55:04 【问题描述】:每当我在我的域上收到 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;
【问题讨论】:
【参考方案1】:error_page
设置已经可以为您做到这一点:
error_page 404 =301 http://example.com/;
【讨论】:
【参考方案2】:有一个更快的方法:
error_page 404 = @foobar;
location @foobar
return 301 /;
我所说的“更快”是指通过使用 return 而不是重写来“在 Web 服务器内没有无用的正则表达式匹配”。
【讨论】:
太棒了,我喜欢它【参考方案3】:这是我使用 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;
【讨论】:
【参考方案4】:这应该可行:
error_page 404 = @foobar;
location @foobar
rewrite .* / permanent;
【讨论】:
我在 noahc.net 上有这个设置。例如,每当我在noahc.net/not-real-page.html 中输入内容时,我都会被发送到 mediacom dns 错误页面。有任何想法吗?我已经重启了 nginx。 我在访问上述(不存在的链接)时收到404 Not Found nginx/1.0.6
,也许这是您这边(客户端)的问题?
在任何情况下这并不意味着它不能正常工作吗?我不应该得到重定向部分和 301 错误吗?
是的,它不能正常工作,你应该被重定向。请张贴您的 server ..
块,可能是其他原因阻止它工作。
这似乎不是正确的服务器-block,因为您的网站在端口 80 而不是 12680 (listen 12680;
) 上运行。否则,该块看起来没问题,应该可以工作。以上是关于Nginx:404错误时返回301重定向的主要内容,如果未能解决你的问题,请参考以下文章
SSL 301 重定向错误 - Joomla 和 Nginx