Nginx正则创建变量实现.com转.org域名跳转并保留请求路径
Nginx实现保留子域名和URI的域名后缀跳转
解决方案:使用map指令创建替换后的域名变量
Nginx的map指令可以在全局http块中定义变量,通过正则匹配将原域名转换为目标域名,配置简洁且易于维护,完全符合你的需求。
1. 在http块中添加map配置
在Nginx主配置文件(如nginx.conf)的http块内添加以下内容:
map $host $new_host { # 匹配所有以.com结尾的域名,替换后缀为.org ~^(.*)\.com$ $1.org; }
这个规则会捕获$host中.com之前的所有内容(包括子域名),并将后缀替换为.org。
2. 修改server块的跳转规则
将你原有的server块中的location配置替换为:
server_name domain.com *.domain.com; root /var/www/html/domain.com/public/www; index index.php index.html index.htm index.txt index; location / { return 302 $scheme://$new_host$request_uri; }
效果验证
当请求https://foo.bar.domain.com/file时:
$host的值为foo.bar.domain.commap规则匹配后,$new_host的值为foo.bar.domain.org- 最终重定向地址为
https://foo.bar.domain.org/file,完全保留了子域名和请求URI。
为什么选择map而非rewrite?
map指令的配置逻辑直观,后续维护人员一眼就能理解是做域名后缀替换,相比嵌套的rewrite规则或伪location处理,结构更清晰,降低了维护成本。
内容的提问来源于stack exchange,提问作者jackar
相关产品推荐
相关产品推荐

