簡體   English   中英

將虛擬子域重寫為子文件夾並保留原始URL

[英]Rewrite virtual subdomain to subfolder and keep original url

我在網上搜索了幾天,但沒有發現任何疑問。 這就是我想做的:

我網站上的每個用戶都收到一個個人子域,例如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]

我希望一切都清楚了,如果沒有:請詢問,我提供更多信息!

提前致謝!

尤里

只要您的所有子域和主域共享相同的文檔根目錄,就可以從規則中刪除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]

盡管第一種方法會更有效率。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM