2013-04-28 184 views
0

我的网址是这样的:Nginx的URL重写规则

http://example.com/site1 
http://example.com/site2 
    ... ... 
http://example.com/siten 

是的,有网站的列表。

但实际上我想通过(以site1例如)来访问子网站:

http://site1.example.com 

我在nginx.conf已经做的是:

if ($host = site1\.example\.com){ 
    rewrite ^/(.*) /example.com/site1/$1 break; 

}

呀,在本地机器上测试,我已编辑/etc/hosts

127.0.0.1 example.com 

但不行。谁能解释?

+0

你让我错了:不是'127.0.0.1 example.com',而是'127.0.0.1 subdomain.example.com',并确保'... 0.1子域...'之间的空格是标签空间或几个空白字符。最好的办法是复制hosts文件中已有的条目,然后再编辑任何东西,并用127.0.0.1 subdomain.example.com替换现有的条目。欢呼 – 2013-04-28 12:22:58

+0

我已经在我的同事的帮助下解决了这个问题。它应该是: 添加'proxy_set_header HOST $ host;'和'if($ host = site1.example.com){ 重写^ /(。*)/ site1/$ 1 break; }'。当然,我应该在'/ etc/hosts'中添加'127.0.0.1 site1.example.com'。 – holys 2013-04-28 16:36:04

回答

1

您必须为子域功能指定CNAME记录。没有它,没有Web服务器配置规则将工作。

在您的DNS记录管理面板(无论您使用什么),您必须创建subdomain.domain.com并将DNS A记录指向IP,其中路由domain.com。

对于本地机器查找hosts文件,请使用管理员权限打开它,并在新行中添加127.0.0.1 subdomain.domain.com。

+0

我应该在本地机器上做什么? – holys 2013-04-28 09:47:24

+0

编辑主机文件。找到主机文件并键入例如127.0.0.1 sub.example.com – 2013-04-28 09:49:35