我想重写所有与Nginx匹配http://*.examle.tld/files/*
到http://$1.otherdomain.tld/files/?file=$2
的请求。我还想在没有子域即http://example.tld/files/*
到http://otherdomain.tld/files/?file=$1
原因是使用本地开发的生产文件而无需同步文件夹。
这是我到目前为止所得到的,但没有成功:
location / {
...
rewrite ^http://(\w+)\.(.*)/files/(.*) http://$1.otherdomain.tld/inc/reader.php?file=$3;
rewrite ^.*/files/(.*) http://$1.otherdomain.tld/inc/reader.php?file=$1;
...
}
感谢您的帮助。
答案 0 :(得分:1)
您不能将服务器名称用作rewrite
指令正则表达式的一部分。如果server
阻止了here所述的通配符server_name
,则可以使用命名捕获在稍后的块中使用。
例如:
server {
server_name ~^(?<sub>\w+\.)?example\.tld$;
location /files/ {
rewrite ^/files(.*)$ http://${sub}otherdomain.tld/files/?file=$1 permanent;
}
}
有关详细信息,请参阅this document。