我想在每次调用mydomain.com/blog2时重定向到子域名,到目前为止我有这个:
location ^~ /blog2/$ {
return 301 https://blog.mydomain.com$request_uri$is_args$args;
}
这仅适用于没有尾部斜杠或/ blog2 / somethingelse中断的mydomain.com/blog2/,/ blog2。 / blog2 / somethingelse /转到blog.mydomain.com没有somethingelse部分。
我如何实现:
mydomain.com/blog2 --> blog.mydomain.com
mydomain.com/blog2/ --> blog.mydomain.com
mydomain.com/blog2/something --> blog.mydomain.com/something
mydomain.com/blog2/something/ --> blog.mydomain.com/something
mydomain.com/blog2/something?foo=bar --> blog.mydomain.com/something?foo=bar
答案 0 :(得分:1)
如果您需要删除网址的/blog2/
部分,则无法使用$request_uri
,因为它包含完整的原始URI。您需要使用正则表达式捕获所需URI的部分,作为location
或rewrite
语句的一部分。
使用正则表达式location
语句:
location ~ ^/blog2(?:/(.*))?$ {
return 301 https://blog.mydomain.com/$1$is_args$args;
}
可能与以下内容相同:
rewrite ^/blog2(?:/(.*))?$ https://blog.mydomain.com/$1 permanent;
有关详情,请参阅this document。