TLDR: subdirectory/cool
重定向到newdirectory/cool
。 subdirectory?cool
在没有参数的情况下错误地重定向到newdirectory
。
我正在尝试将子目录重定向到新目录,同时使用正则表达式~* ^(?:((\/m\b)(?!-)(\/)?))(?<requestedPath>.*)?$
/subdirectory/cool
等路径成功重定向到/newdir/cool
。但是,/subdirectory?cool
和/subdirectory/?cool
等路径会重定向到/newdir
,而不会保留网址参数。
重定向的工作原理如下:
/子目录 - &gt; / newdir
(我在这里发布的有关子目录重定向的许多建议都假定尾随slas 或没有考虑到他们的/ m的正则表达式也影响/媒体)
< / LI>此处的测试成功:Successful Test
失败的代码:
location ~* ^(?:((\/subdirectory\b)(?!-)(\/)?))(?<requestedPath>.*)?$ {
return 301 /newdir/$requestedPath;
}
此外,我也尝试使用重写而不是位置无济于事。
答案 0 :(得分:0)
显然,有了位置,我们需要$is_args。
这就是诀窍:return 301 /newdir/$requestedPath$is_args$args;
最终结果:
location ~* ^(?:((\/subdirectory\b)(?!-)(\/)?))(?<requestedPath>.*)?$ {
return 301 /newdir/$requestedPath$is_args$args;
}