将网站子目录forum重定向至新子域名forum.newwebsite的配置求助
Nginx 子目录到新域名的路径保留重定向配置
你需要把原站点/forum/子目录下的所有请求,保留/forum/之后的路径部分,重定向到新域名的根目录下。之前的配置存在两个问题:
- 第一个配置直接返回新域名,会丢失
/forum/之后的所有路径,不符合需求; - 第二个配置使用
$request_uri会把完整请求路径(比如/forum/demoforum)拼到新域名后,导致新地址多了不需要的/forum/前缀。
正确配置方案
推荐用rewrite规则精准处理路径截取:
location ^~ /forum/ { rewrite ^/forum/(.*)$ https://forum.newwebsite.org/$1 permanent; }
配置说明
^~ /forum/:标记该location优先匹配所有以/forum/开头的请求,避免被其他正则location干扰;rewrite ^/forum/(.*)$ ...:通过正则捕获/forum/之后的所有内容(存到$1变量);https://forum.newwebsite.org/$1:把捕获到的路径拼接到新域名后,实现路径完整保留;permanent:对应HTTP 301永久重定向,利于搜索引擎收录。
如果偏好return指令,也可以通过变量处理实现:
location ^~ /forum/ { set $target_path $uri; if ($target_path ~* ^/forum/(.*)) { set $target_path /$1; } return 301 https://forum.newwebsite.org$target_path; }
内容的提问来源于stack exchange,提问作者Martin McGowan
相关产品推荐
相关产品推荐

