2011-01-19 98 views
0

這是交易。基本上我有多個域,我希望其中一個域指向該網站的常規基地,但其他域指向該網站的一個子網段而不是修改地址欄中的網址。這個想法是,每個額外的域名都是爲他們的部分打上標籤。網站子分區的多個域

例子:
www.domain.com的網站
www.domain2.com點頂層到www.domain.com/abc
www.domain3.com點www.domain.com/def

另請注意,在示例中'abc'和'def'不是文件系統上的真實目錄,而是在數據庫中定義的虛擬區域。

我花了相當多的時間環顧四周,找不到適合的東西。我做不是想要使用域隱形,因爲它使用框架。定期的重定向顯然很容易指向正確的東西,但他們改變了地址欄中的網址。

有什麼辦法可以做到這一點?

編輯:
我已經添加了別名馬克以下建議,但任何人都可以擺脫對我怎麼可能再使用mod_rewrite,使這項工作光?

+0

你有權訪問DNS服務器嗎? – 2011-01-19 05:42:11

+0

我可以編輯dns記錄,是的。 – dev 2011-01-19 05:43:10

回答

5

首先,您的DNS記錄需要指向Web服務器的IP。

其次,您必須設置Apache以從同一個VirtualHost爲多個域提供服務。啓用mod_alias,然後在VirtualHost定義中使用ServerAlias指令。例如:

ServerName www.domain.com 
ServerAlias domain.com www.domain2.com domain2.com www.domain3.com domain3.com 

如果你正確地做到這一點,你應該看到在每個域完全相同的內容,沒有任何重定向。

接下來你做什麼是一個架構決定。您可以使用mod_rewrite對基於域的URL路由規則進行硬編碼,也可以使用PHP根據$ _SERVER ['HTTP_HOST']的值執行路由。

一個mod_rewrite的解決方案可能涉及添加這樣的事情.htaccess文件:

RewriteEngine On 

RewriteCond %{HTTP_HOST} domain2\.com$ 
RewriteRule ^(.*)$ /abc/$1 [L] 

RewriteCond %{HTTP_HOST} domain3\.com$ 
RewriteRule ^(.*)$ /def/$1 [L] 

這是一個高層次的概述。如果您需要詳細說明流程的某個部分,請評論我的答案。