2012-10-13 32 views
1

我在網上搜索了幾天,但我沒有發現任何問題。這是我想要做的:重寫虛擬子域到子文件夾並保留原始網址

我的網站上的每個用戶都會收到像http://username.domain.com這樣的個人子域名。 當然這是一個虛擬的子域名。現在

,我已經建立了一個通配符DNS A記錄,打開mod_rewrite的ON取得做到這一點:

當有人衝浪到http:// anysubdomain.domain.com他們將被重定向到http:// www.domain.com/sub/index.php?var=anysubdomain。在index.php中,有一個函數根據'var'變量(子域的名稱)獲取唯一的信息。

我想要做的是當有人衝浪到http:// anysubdomain.domain.com時,他被重定向到http:// www.domain.com/sub/index.php?var=anysubdomain(就像它是現在),但原始URL(http:// anysubdomain.domain.com)保存在瀏覽器欄中。所以看起來每個用戶都有自己的子域名。

這是htaccess文件我目前使用的:

RewriteEngine On 
Options +FollowSymlinks 


RewriteCond %{HTTP_HOST} !^www\.domain\.com 
RewriteCond %{HTTP_HOST} !^static\.domain\.com 
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)\.domain.com$ [NC] 
RewriteRule ^(.*)$ http://www.domain.com/sub/index.php?username=%2 [L] 

我希望一切都清楚了,如果不是:問我提供更多的信息!

在此先感謝!

尤里

回答

0

只要所有的子域和主域共享相同的文檔根目錄,你可以得到您的規則擺脫http://www.domain.com位:

RewriteCond %{HTTP_HOST} !^www\.domain\.com 
RewriteCond %{HTTP_HOST} !^static\.domain\.com 
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)\.domain.com$ [NC] 
RewriteRule ^(.*)$ /sub/index.php?username=%2 [L] 

否則,你會需要通過增加P標誌使用的mod_proxy:

RewriteCond %{HTTP_HOST} !^www\.domain\.com 
RewriteCond %{HTTP_HOST} !^static\.domain\.com 
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)\.domain.com$ [NC] 
RewriteRule ^(.*)$ http://www.domain.com/sub/index.php?username=%2 [L,P] 

雖然這將是更有效的第一種方式。

+0

我該如何實現讓我的所有子域與主域具有相同的文檔根?這是當前結構: /domains/domain.com/htdocs/ - 主域名 - 靜態 因爲我的子域是虛擬的(除了靜態子域),他們真的沒有根(還是我錯誤?)。 當我擺脫我的.htaccess文件中的'http://www.domain.com'時,有500內部服務器錯誤。當我使用mod_proxy添加P標誌時也是如此。 – YuriH

+0

@YuriH最有可能你所有的子域名都有相同的文檔根目錄,如果不是你需要聯繫你的主機服務的支持。 –

相關問題