Nginx配置求助:将特定内部URL重定向至对应外部原链接
Nginx重定向配置方案
你之前的rewrite规则没生效,是因为正则只匹配了/http开头的路径,但实际请求路径是/https://xxx,正则范围没覆盖到完整的前缀。
给你两种可靠的配置方案,选一种放在对应域名的server块里即可:
方案一:用rewrite规则
rewrite ^/(https?://.+)$ $1 permanent;
https?匹配http或https,确保两种协议的外部链接都能被处理permanent表示301永久重定向,利于SEO;如果需要临时重定向,换成redirect(302)即可
方案二:用location块匹配(优先级更明确)
location ~ ^/(https?://.+)$ { return 301 $1; }
这种写法通过location直接匹配目标路径,避免和其他rewrite规则冲突,逻辑更清晰。
注意事项
- 把这个规则放在PHP处理的location(比如
location ~ \.php$)之前,否则请求会先被PHP接管,无法触发重定向 - 修改配置后,先用
nginx -t校验语法,再执行systemctl reload nginx生效 - 如果有其他自定义规则,注意正则匹配的优先级:正则location > 前缀location
内容的提问来源于stack exchange,提问作者Adebowale
相关产品推荐
相关产品推荐

