nginx 将子域名重写为文件作为变量

nginx 将子域名重写为文件作为变量

如何将子域名作为变量添加到重写中?

你好.example.com 应该转到 example.com/user.php?u=你好但仍然显示为你好.example.com

我目前正在做http://example.com/users/你好但希望为用户提供 Tumblr 风格的域名。

rewrite ^/users/(.*)$ /user.php?u=$1 last;

此外,如果子域名 hello.example.com/settings/ 之后有类似 /settings/ 的页面,我需要重写为 settings.php

答案1

两件事。首先,您需要读取主机变量以获取子域并将其设置为稍后使用的变量。
我使用了变量 $sub_domain,然后将变量附加到 URI。

if ($host ~* (.*)\.example\.com) {
     set $sub_domain $1;
     rewrite ^/user.php$ /user.php?u=$sub_domain
}

重写行需要进一步调整。我在这里给出了一个例子。参考 nginx 内置的变量文档了解可用选项。

相关内容