1

我有一个包含两个 sudomains 的域

www.test.com
wiki.test.com

作为 wiki 多语言,我有几个子目录

http://wiki.test.com/en for English
http://wiki.test.com/es for Spanish

等等

到目前为止,wiki.test.com的根目录是一个简单的页面,询问您想要哪种语言并重定向到语言子目录。

但是现在,我想要“选择语言页面”

http://wiki.test.com

装载:

http://www.test.com/index.php?page=wiki

(并且只有“wiki.test.com”或“wiki.test.com/”,而不是像“wiki.test.com/ru”这样的子目录)

所以我想

server {
    server_name wiki.test.com;
    ...
    index index.php;

    location = / {
       rewrite ^ http://www.test.com/index.php?page=wiki;
#OR    return 302 http://www.test.com/index.php?page=wiki;
    }

    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

[...]

}

但问题是,当我打开wiki.test.com时,人们可以看到重写后的网址www.test.com/index.php?page=wiki而我希望他们只看到wiki.test.com

我很确定解决方案非常简单,并且我进行了相当广泛的搜索,但是我不能使用 good 关键字来查找解决方案(我发现了很多与 proxy_pass 相关的类似问题,但我没有印象那 proxy_pass 是我的情况的解决方案)

提前非常感谢:)

4

1 回答 1

0

好吧,这似乎是不可能的,因为我们在 nginx 中更改 server{} 上下文(通过更改子域,而不仅仅是 URI)。

我并没有真正尝试过,但我认为我可以使用 proxy_pass 但不仅我必须使用它

location = / {
proxy_pass = http://www.test.com

}

还有包含图像、css js 等的子目录。我发现这是一个非常无用的复杂化。

因为我有 www 的内容。在与wiki相同的机器上,我发现最简单的是在wiki中符号链接www的内容,并添加一个简单的重写

location = / {
    rewrite ^ /index.php?page=wiki;
}
于 2013-10-06T19:25:27.463 回答