2013-04-28 295 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