我正在尝试重写一个特定子域的URL。逻辑解决方案似乎是使用if-else检查当前子域是否是那个。
我不想要一个新的虚拟主机,因为我有很多设置为子域的东西,如果我为每个子域做了一个很长的部分,它会很混乱。
使用Apache,它很容易,只是一个.htaccess文件,我想要和完成。在nginx中有一种方法可以像这样工作吗?
我尝试的是这样的:
if ($subdomain = 'foo') {
rewrite ^/(.*)$ /index.php?_url=/$1;
}
不起作用。知道怎么样?
P.S。:只是为了澄清:变量$subdomain
包含子域名。他们看起来像:subdomain.martinfejes.hu。
答案 0 :(得分:3)
这是一个糟糕的方法 - 因为nginx以非常快的方式与虚拟主机一起工作,与使用条件相反。一般来说,条件由"简单的虚拟堆栈机器"解释。 (见http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#internals)并且速度慢。
此外,使用虚拟主机将限制可能的副作用,就像现在的配置复杂性一样。
答案 1 :(得分:0)
你需要像这样使用正则表达式匹配:
server {
server_name ~ ^foo\.;
location / {
rewrite ^/(.*)$ /index.php?_url=/$1;
}
}