Nginx将子文件夹重写到子文件夹

时间:2014-07-24 11:19:14

标签: redirect nginx rewrite

我一直有问题将旧的子文件夹完全重定向到新的子文件夹。我需要/ 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

谢谢

3 个答案:

答案 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_nameserver_name的名称相同,则可以用$http_host替换它并使其保持动态。