2012-11-08 30 views
0

我有一個網站,我在其中啓用了子域訪問功能,例如:將http://example.com重定向到http:/www.example.com,同時保持http://subdomain.example.com訪問完好

http://subdomain1.example.com 

它訪問相同的代碼,但傳遞域參數以顯示不同的微型網站。造成這種情況的httpd.conf文件代碼如下:

RewriteCond %{HTTP_HOST} ^([^./]+)\.example\.com$ 
RewriteRule forums.html$ /browse.php?type=forums&domain=%1 [QSA] 

現在我需要http://example.com重定向到http://www.example.com

我想這一點,但沒有奏效:

RewriteCond %{HTTP_HOST} ^example\.com 
    RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] 

(來源: http://www.cyberciti.biz/faq/apache-redirect-domaincom-to-wwwdomaincom/

EDIT1

<VirtualHost IPADDRESS:80> 
    ServerAlias *.example.com 
    DocumentRoot /var/www/html/abc 
    ServerName www.example.com 
    UseCanonicalName On 

EDIT2

嗨mreithub,

我所需要的設置是這樣的:

http://X1.example.com應使用代碼/某事/ X1

http://X2.example.com應該使用的代碼/東西/ X2

http://example.com應該重定向到http://www.example.com

http://www.example.com/scriptA.php應使用代碼/var/www/html/abc/scriptA.php

http://whateverelse.example.com/scriptA.php應/var/www/html/abc/scriptA.php使用的代碼,但可以與通過'域= whateverelse」參數(但屏幕上的URL是要始終顯示域爲http://whateverelse.example.com

我曾問一個問題,關於SF - https://serverfault.com/questions/408805/configuring-httpd-conf-to-handle-wildcard-domains-with-multiple-scripts - 從那裏我用ADAPTR的技術傳遞域參數的PHP腳本。

+0

你使用apache配置文件或.htaccess? – mreithub

+0

Apache配置文件(httpd.conf) – Steve

回答

0

我在Apache中重定向整個VirtualHosts個人最喜歡的是簡單地爲域創建一個虛擬主機重定向並使用Redirect指令:

<VirtualHost IPADDRESS:80> 
    ServerName example.com 
    Redirect/http://www.example.com/ 
    DocumentRoot /var/www # <-- Just for completeness 
</VirtualHost> 

...然後另一個虛擬主機爲您的實際網站

Redirect重定向每個請求將保留任何後綴(例如http://example.com/foo?bar=bak變爲http://www.example.com/foo?bar=bak)主機a到b。

我用Redirect很多從http改寫://到https://

+0

感謝mreithub - 這將如何處理http://subdomain.example.com? – Steve

+0

@Steve我編輯了答案給出了一個更完整的例子。希望它有幫助 – mreithub

+0

嗨M - 請參閱我的Edit1 - 它描述了我目前擁有的。這允許訪問'網站',如'xyz.example.com'(我需要)。 – Steve

0

哇。 3小時後...很多變化,很多的學習。

1)改變了這種:

NameVirtualHost IPADDRESS:80 

到:

NameVirtualHost *:80 

2)標記所有:

<VirtualHost IPADDRESS:80> 

如:

<VirtualHost *:80> 

3)重排服務器名並將其置於第一內重新排列所有的VirtualHosts虛擬主機(如果不知道此所作的任何差異)

<VirtualHost *:80> 
    ServerName test4.example.com 
    ServerAlias test4.example.com 
    DocumentRoot /home/test4/public_html 
    UseCanonicalName On 
</VirtualHost> 

3)。早先放置'靜態'/固定子域名,最後放置'全部/萬維網'域名。最後一個看起來像:

<VirtualHost *:80> 
    ServerName www.example.com 
    ServerAlias example.com *.example.com 
    DocumentRoot /var/www/html/abc 
    UseCanonicalName On 
    ... 
相關問題