如何将子域名作为变量添加到重写中?
你好.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 内置的变量文档了解可用选项。