2012-07-29 38 views
0

目錄中我發現了一些有趣的想法在這裏計算器,但是沒有一個清楚說明對我來說足夠了,所以我不得不問自己,如果它甚至可以做:)阿帕奇(htaccess的)重定向到基於用戶選擇的域名

情況:

我已經安裝了Apache的http服務器和一堆網站在www目錄中的文件夾與不同的內容。

比方說:

www/Site1 (Phpbb) 
www/Site2 (Wordpress) 
www/Site3 (Own web pages) 

我自己打算在Site3使用一個域(姑且稱之爲site3.com,www.site3.com)。 我在no-ip.org上創建了兩個域(我們稱它們爲site1.sytes.net和site2.sytes.net)。 所有三個創建的域都指向linux(apache)服務器IP地址的端口80。

因此,我們有這些領域準備:

www.site3.com 
site1.sytes.net 
site2.sytes.net 

現在的問題:

如何創建重定向到特定的目錄誰想要從這些域的內容的用戶。 我想要得到「site1.sytes.net」(並寫到瀏覽器)的用戶指向Site1目錄並重寫瀏覽器地址以忽略該目錄,並將「http://site1.sytes.net」 。

例如:

User want: site1.sytes.net [/index.html] 
Server goes to: www/Site1 [/index.html] 
User see in browser: http://site1.sytes.net [/index.html] 

等等:

site2.sytes.net [/index.html] => www/Site2 [/index.html] 
www.site3.com [/index.html] => www/Site3 [/index.html] 

如果我沒有記錯HTTP_HOST將僅返回域,所以它是無用的試圖找出寫信給瀏覽器哪些用戶對於site1.sytes.net和site2.sytes.net(因爲它只會返回sytes.net)。

+0

http://www.faqforge.com/linux/redirect-a-subdomain-with-apache-mod_rewrite-keep-the-url-in-the-address-bar /如果這不起作用,可能是因爲no-ip.org正在將請求轉換成爲您的服務器提供最近緩存的IP地址。 – 2012-07-29 04:21:54

回答

0

%{HTTP_HOST}確實是你想要的,是的,它只匹配域。但是您在條件中使用它,並使用%{REQUEST_URI}或規則本身來匹配URI。嘗試把這個在你的htaccess文件在你的文檔根目錄(我假設是您所有網站一樣,否則,有沒有點做任何的這個):

RewriteEngine On 
RewriteCond %{HTTP_HOST} site1.sytes.net [NC] 
RewriteCond %{REQUEST_URI} !^/Site1 
RewriteRule ^(.*)$ /Site1/$1 [L] 

RewriteCond %{HTTP_HOST} site2.sytes.net [NC] 
RewriteCond %{REQUEST_URI} !^/Site2 
RewriteRule ^(.*)$ /Site2/$1 [L] 

RewriteCond %{HTTP_HOST} www.site3.com [NC] 
RewriteCond %{REQUEST_URI} !^/Site3 
RewriteRule ^(.*)$ /Site3/$1 [L]