Nginx配置:仅访问特定目录/_时重定向至网站根目录的方法
Nginx 特定目录根访问重定向解决方案
要实现仅当访问 https://example.com/_ 或 https://example.com/_/ 时重定向到根目录,同时允许访问该目录下的资源/子目录,你可以用以下两种简洁的配置方式:
方式一:精确匹配 Location 规则
这种方式优先级最高,配置清晰直观:
# 匹配精确的 /_ 请求 location = /_ { return 302 https://example.com/; } # 匹配精确的 /_/ 请求 location = /_/ { return 302 https://example.com/; }
方式二:单条 Rewrite 规则
如果想简化配置,直接在 server 块中添加这条 rewrite 规则即可:
rewrite ^/_/?$ https://example.com/ redirect;
^/_/?$是正则表达式:^匹配路径开头,/_匹配目标目录前缀,/?匹配可选的末尾斜杠,$匹配路径结尾,确保只有精确的/_或/_/会被匹配。redirect对应临时重定向(HTTP 302),如果需要永久重定向可以换成permanent(HTTP 301)。
为什么你之前的配置不生效?
你之前写的正则 ^/_(?/)(!.*)$ 存在语法错误:
(?/)不是合法的正则语法,正确的可选斜杠写法是/?(!.*)写法错误,要确保路径后无其他内容,应该用结尾匹配符$
配置完成后,记得重启 Nginx 服务使配置生效:
sudo systemctl restart nginx
内容的提问来源于stack exchange,提问作者StackReject
相关产品推荐
相关产品推荐

