2014-06-30 150 views
0

我有以下.htaccess代碼,成功地重寫子域目錄。因此,如果用戶訪問jim.domain.com,他們將獲得服務placeholder.php?page_type=profile。但是,這也影響主目錄http://domain.com。我喜歡它,所以任何與子域名被定向到placeholder.php頁面,但使用沒有子域名的主目錄將照常運行,轉到主目錄中的index.php。我將如何實現這一目標?感謝您的任何建議。.htaccess只爲子域重寫

Options +FollowSymLinks 
RewriteEngine on 
RewriteBase/

RewriteCond %{HTTP_HOST} !^exclude.domain.(.*) 
RewriteCond %{HTTP_HOST} !^www.domain.(.*) 

RewriteCond %{HTTP_HOST} (.*)\.domain\.com 

RewriteRule ^$ placeholder.php?page_type=profile [L,QSA] 
+0

您在混用術語 - 「主目錄」 - 您是不是要說「主域名」?你有'www.domain.tld,exclude.domain.tld'排除規則如果這些仍然存在? –

+0

嗨邁克爾 - 我毫不懷疑,我正在混淆我的術語......試圖讓我的腦袋繞過這一切;)。基本上我想要的是這個。 www.domain.com的行爲應該是默認顯示index.php。任何有子域的東西,anything.domain.com都應該去domain.com/placeholder.php?page_type=profile – Chris

+0

你現有的規則是不是已經做到了? (除了'exclude.domain.tld'也要去index.php)'RewriteCond!^ www \ .domain \。(。*)'應該從placeholder.php中正確排除它(注意反斜槓來逃避''。 ',但是) –

回答

0

如果您想爲test.domain.com所有請求去domain.com/placeholder.php?page_type=profile爲您的評論,那麼你需要在重寫

Options +FollowSymLinks 
RewriteEngine on 
RewriteBase/

RewriteCond %{HTTP_HOST} !^exclude.domain.(.*) 
RewriteCond %{HTTP_HOST} !^www.domain.(.*) 
RewriteCond %{HTTP_HOST} (.*)\.domain\.com 
RewriteRule ^$ http://domain.com/placeholder.php?page_type=profile [L,QSA] 

此部分這不會怎麼過處理域

但使用沒有子域的主目錄將照常運行,轉到主目錄中的index.php

因爲您沒有文件/目錄未命中規則重定向到index.php。你需要這些,還是真的想解決第一部分?

我也想知道,如果你想profile替換爲子域匹配,在這種情況下,你要

RewriteRule ^$ http://domain.com/placeholder.php?page_type=%1[L,QSA] 

但由於^$只匹配一個空的URL這兩個例子中不會改寫test.domain.com/longer_url任何路徑路徑。但是在你提出合適的Reerite之前,你需要決定如何處理路徑。

+0

嗨西梅昂 - 謝謝你的幫助。我試圖按照你的例子,但沒有多少運氣。正如我在上面的評論中提到的 - 基本上說,我想要的是... www.domain.com的行爲應該是默認顯示index.php(這是它沒有任何重寫的行爲)。然後,任何以子域名開頭的網址(例如anything.domain.com)都應該轉到http://domain.com/placeholder.php?page_type=profile,但仍然會在地址欄中顯示anything.domain.com。那有意義嗎?對不起,我仍然在學習這一點;) – Chris

+0

@Chris那麼,你有什麼「不幸」,我的例子,因爲我不能讀你的想法。 –