0

我正在尝试通过以下方式转发我的域(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 中输入的内容)

提前感谢所有帮助:)

4

1 回答 1

0

首先,你应该明白'rewrite'和'redirect'的区别,rewrite意味着在服务器端修改uri,不需要用户再次请求,redirect意味着服务器端返回一个新的url并要求客户端开始一个新的请求使用这个新网址。重定向指令手册

在这里,您使用带有 'http://' 和 'permanent' 修饰符的重写指令。这意味着 301 重定向,这要求客户端使用特定的 url 发布一个新请求,因此,用户将看到新的 url。

您应该更改您的 conf 文件,以确保虚拟主机接受所有这些主机

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; 
}

请注意,目标网址中没有“http://”和“break”修饰符。

于 2013-10-25T07:38:59.040 回答