我一直有问题将旧的子文件夹完全重定向到新的子文件夹。我需要/ old和/ old /分别转到/ new和/ new /
我还需要在/ old / blah / blah2 / to / new / blah / blah2 /之后跟随任何参数,所以基本上用新的替换旧的,无论什么叫做。以下是我能得到的最接近的。
location /account/ {
rewrite ^/account/(.*)$ https://$server_name/portal/$1 permanent;
}
实际网址示例:
www.domain.com/account/index.php?loend=true&cmd=callback&module=8 需要是 www.domain.com/portal/index.php?loend=true&cmd=callback&module=8
谢谢
答案 0 :(得分:1)
你可以尝试重写^ / account /(.*)$ / portal / $ 1; ?无需将其放入位置/帐户/ {...} - Guillaume Filion 7月24日19:00
使用just:rewrite ^ / account /(.*)$/ portal / $ 1; 没有指定位置已解决所有问题
答案 1 :(得分:0)
它应该可以工作,但你错过了$ sign。 这里更正了一位代码
rewrite ^/account/(.*)$ https://$server_name/portal$1 redirect;
或
rewrite ^/account/(.*)$ https://$server_name/portal$1 last;
或
rewrite ^/account/(.*)$ https://$server_name/portal$1;
比重新加载nginx的配置
service nginx reload
这是源站点。
https://www.digitalocean.com/community/questions/301-redirect-nginx
答案 2 :(得分:0)
由于这似乎更像是重定向而不是重写,我会使用return
location ^~ /account(.*) {
return 301 https://$server_name/portal$1$is_args$query_string;
}
$is_args$query_string
将附加您在其中一条评论loend=true&cmd=callback&module=8
中提到的任何查询字符串,并且还要注意,如果$server_name
与server_name
的名称相同,则可以用$http_host
替换它并使其保持动态。