Nginx子域名404时301重定向至主域名配置方法
实现子域名404时301重定向到主域名的方法
嘿,这个需求在Nginx里配置起来挺直接的,咱们只需要在subdomain.domain.com对应的Server Block里动手就行,不用改动主域名的配置。下面给你两种靠谱的实现方式,选一个适合你的就行:
方法一:用error_page快速配置
打开子域名的配置文件(通常路径是/etc/nginx/sites-available/subdomain.domain.com,如果是软链到sites-enabled目录的话直接编辑软链指向的文件也可以),在server块内部添加这一行:
error_page 404 =301 https://domain.com;
这里的=301是关键——它告诉Nginx遇到404状态时,直接返回301永久重定向到主域名,而不是默认的内部跳转逻辑。
方法二:用命名location实现灵活扩展
如果以后你可能需要调整重定向逻辑(比如要排除某些特定路径的404跳转),可以用命名location的方式,可读性和扩展性更好:
# 定义命名location,专门处理404后的重定向 error_page 404 @redirect_to_main; location @redirect_to_main { return 301 https://domain.com; # 要是你想把用户原本请求的路径也带到主域名,可以改成下面这行: # return 301 https://domain.com$request_uri; }
注释里的选项是可选的——比如用户访问subdomain.domain.com/xxx触发404时,你想让他跳转到domain.com/xxx,就用带$request_uri的那行配置。
最后一步:验证配置并重启Nginx
配置写完后,先检查Nginx配置有没有语法错误:
sudo nginx -t
如果输出显示test is successful,就可以重启Nginx让配置生效:
sudo systemctl restart nginx
这样设置后,用户访问子域名下不存在的资源触发404时,就会自动被301重定向到主域名啦。
内容的提问来源于stack exchange,提问作者NeoSennin
相关产品推荐
相关产品推荐

