我正试图通过以下方式转发我的域(cafe.com)上的所有传入流量:
if($ host ='coffee.cafe.com'){ 重写^ /(。*)$ https://www.cafe.com/homepage/?path=coffee永久; }
if($ host ='tea.cafe.com'){ 重写^ /(。*)$ https://www.cafe.com/homepage/?path=tea永久; }
虽然这很好,但我不希望访问者看到整个“主页/?path = coffee”部分。有没有办法让我在URL中隐藏“homepage /?path = coffee”?并只显示coffee.cafe.com或tea.cafe.com(他们最初输入的URL)
提前感谢所有帮助:)
答案 0 :(得分:0)
首先,你应该理解'重写'和'重定向'之间的区别,重写意味着在服务器端修改uri而不需要用户的另一个请求,重定向意味着服务器端返回一个新的url并要求客户端启动这个新网址的新请求。 manual重定向指令。
在这里,您使用带有'http://'和'permanent'修饰符的重写指令。这意味着301重定向,这要求客户端发布具有特定URL的新请求,因此,用户将看到新的URL。
您应该更改配置文件,确保虚拟主机接受所有这些主机:
server {
listen **;
server_name .cafe.com;
.....
}
然后,'tea.cafe.com'或'coffee.cafe.com'或'www.cafe.com'与服务器相同。如果你想为不同的主机做一些不同的事情,你可以使用:
if ($host = 'coffee.cafe.com' ) {
rewrite ^/(.*)$ /homepage?path=coffee break;
}
if ($host = 'tea.cafe.com' ) {
rewrite ^/(.*)$ /homepage?path=tea break;
}
请注意,目标网址和“break”修饰符中没有“http://”。