2013-03-20 118 views
0

我需要將所有子域重定向到特定頁面,而不實際更改URL,因爲我將在此特定頁面上顯示不同的內容,具體取決於URL中的子域。htaccess將子域名重定向到某個頁面?

比方說,我的網站位於testdomain.com/site1/

我希望所有的子域,像xyz.testdomain.com/site1/甚至xyz.testdomain.com在被重定向到一個特定的頁面http://testdomain.com/site1/index.php/test.php

瀏覽器需要加載http://testdomain.com/site1/index.php/test.php,但URL仍然是xyz.testdomain.com。

這樣做的目的是讓有人可以去abc.testdomain.com或xyz.testdomain.com,兩者都會將用戶帶到testdomain.com/site1/index.php/test.php,然後test.php,我有一些代碼會抓取網址,如果網址是abc.testdomain.com,它會顯示特定的內容,而如果子網域是xyz.testdomain.com,它會顯示不同的內容。

這是我可以在htaccess中做的事嗎?如果是這樣,怎麼樣?

+0

這是重複的。我只知道它。 – 2013-03-20 22:53:16

+0

@ColeJohnson這裏有:http://stackoverflow.com/questions/5790131/htaccess-subdomain-script-redirect – Dave 2013-03-20 22:55:10

回答

0

使用mod_rewrite你可以一起破解它。

# Step 1: If the user went to example.com or www.example.com 
# then we don't want to redirect them. (S=1 says skip the next rule) 
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com 
RewriteRule^- [S=1] 

# Step 2: Anything else is redirected to our catcher script. 

# Option 1: keeps the path they went to, but discards the domain 
# i.e. xyz.example.com/abc/def.txt => /var/www/cgi-bin/abc/def.txt 
RewriteRule ^/?(.*) /var/www/cgi-bin/$1 [QSA,L] 

# Or Option 2: take all requests to the same file 
# i.e. xyz.example.com/abc/def.txt => /var/www/cgi-bin/myfile.php 
RewriteRule^/var/www/cgi-bin/myfile.php [QSA,L] 

QSA告訴它轉發查詢字符串,L告訴它停止尋找更多的重定向(不是絕對必要,但如果你有很多這種事情發生的情況的有時幫助)。

您也可以將變量作爲查詢參數傳遞給腳本,QSA標誌確保它們不會替換原始值;

# xyz.example.com/abc/def.txt => /var/www/cgi-bin/myfile.php?host=xyz.example.com&path=/abc/def.txt 
RewriteRule ^/?(.*) /var/www/cgi-bin/myfile.php?host=%{HTTP_HOST}&path=/$1 [QSA,L] 

這意味着你不必擔心搞清楚請求從你的腳本里面走了(這可能實際上是不可能的,我不知道)。相反,你可以把它看作一個普通的參數(它也像一個普通的參數一樣可以破解;一定要對它進行消毒)。

相關問題