网页的访问方式如下:
example.com/?site=website
在此示例中,我正在访问位于 的网站example.com domain
。
任何人都可以建议重写规则的最佳方法,以便上面的内容可以显示并通过 访问吗example.com/website
?
nginx, Centos 7
答案1
您可以使用以下内容,请记住IfIsEvil
location = / {
if ($arg_site) {
return 302 /$arg_site;
}
}
答案2
有关的:
这个想法是您创建一个重定向循环,但实际上并非如此,因为外部重定向与内部重定向之间存在差异,因此,循环不是封闭的循环,因为一个重定向明确仅是外部的,而另一个重定向则明确仅是外部的内部的:
location = / {
if ($arg_site) {
return 302 /$arg_site;
}
return 200
"<!DOCTYPE html><title>site</title>
<form><input name='site' value='website'/></form>\n";
}
location / {
rewrite ^/([^/]*)\$ /?site=$1 break;
proxy_pass http://javabackend:8080;
}