基于域的nginx重定向并修改url

时间:2016-10-10 19:26:40

标签: redirect nginx url-rewriting

我有几个服务器名称,如www.example.com example.com www.example.de example.de。如果没有参数,我想将语言修改为URL 例如

www.example.com ---> www.example.com?language=en

example.de ---> example.de?language=de

regrads

1 个答案:

答案 0 :(得分:0)

您可以通过将$args与空字符串进行比较来测试缺少参数。例如:

if ($args = "") { 
    return 301 $scheme://$host$request_uri?language=en; 
}

如果您在不同的server块中实施了域名,则可以相应地自定义return语句。

如果需要在支持多个主机名的单个server块中实现所有这些,则可能需要使用map指令来计算语言参数的值。有关详情,请参阅this document

这不是一个完美的解决方案,因为边缘条件www.example.com?会导致www.example.com??language=en看起来不太好。