2014-03-30 26 views
0

我很好奇Tumblr的虛榮子域如何工作。Subdomain vanity username rewrite

我不知道,如果它通過一個htaccess重定向,但你會如何改寫:

myname.mywebsite.com 

要:

www.mywebsite.com/profile.php?username=myname 

任何指針對此深表讚賞。

回答

0

你不一定需要重寫任何東西。無論Host標題(即域名)如何,您都可以配置Web應用程序實例或網站(在IIS,Apache等中)來響應所有請求。然後,Web應用程序可以詢問在應用程序代碼的Host頭並作出相應迴應:

<?php 
$domainName = $_SERVER['HTTP_HOST']; 
if($domainName == 'foo.mydomain.com') { 
    // do something special? 
} else { 
    echo $domainName; 
} 
?> 

還要注意的是Apache的網站指南(http://httpd.apache.org/docs/2.0/misc/rewriteguide.html)規定如何重寫基礎上,Host頭URI進行(上看到的部分「虛擬用戶主機」):

RewriteEngine on 
RewriteCond %{HTTP_HOST}     ^www\.[^.]+\.host\.com$ 
RewriteRule ^(.+)      %{HTTP_HOST}$1   [C] 
RewriteRule ^www\.([^.]+)\.host\.com(.*) /home/$1$2 
+0

更直接地說,他將需要訪問DNS記錄和Web服務器,以設置通配符使所有子域發送到Web服務器,由它又將Web服務器將處理所有請求。但是,如果Web服務器沒有用於該通配符的「虛擬主機」並處理不是來自同一個所有者的多個域,則結果將是不相關的頁面。爲了避免這種情況,通配符或子域必須在其「虛擬主機」上正確配置。在DNS和Web服務器上設置通配符後,可以使用PHP或ASP等來處理頁面或「.htaccess」。 – Prix

+0

這將如何工作的任何子域I.e在php中使用$ _server。我猜你會需要檢查它與一些正則表達式? –

+0

@KwaasiDjin完全取決於您的應用程序。我無法回答這個問題。 – Dai