2011-02-22 204 views
2

有大量的資源在線使用.htaccess重寫你的子域,如果需要的話,也可以將你的主域重寫到子文件夾。我找到了很多答案,其中大部分都完全一樣。我一直在繁瑣地測試這些方法,並且在所有情況下都有同樣的問題。.htaccess重寫到子文件夾的子域和主域

考慮通緝的結果:
maindomain.com:重寫/的public_html/mainsite/
sub.maindomain.com:重寫/的public_html /子/

最快/最徹底的方法我已經考慮如下:

RewriteEngine On 

# Rewrite the main domain 
RewriteCond %{HTTP_HOST} !sub.maindomain.com 
RewriteCond %{REQUEST_URI} !^/mainsite 
RewriteRule ^(.*)$ /mainsite/$1 [L] 

# Rewrite the sub domain 
RewriteCond %{HTTP_HOST} sub.maindomain.com 
RewriteCond %{REQUEST_URI} !^/sub 
RewriteRule ^(.*)$ /sub/$1 [L] 

這工作得很好,除了1個惱人的問題;該生產線

RewriteCond %{REQUEST_URI} !^/mainsite 

基本上阻止了重寫循環,但如果你瀏覽到maindomain.com/mainsite/其重寫爲/的public_html/mainsite /不是/的public_html/mainsite/mainsite /希望籌得404未找到。如果我刪除該行,則會發生500個服務器錯誤,因爲它會進入循環:S

問題是,這些域中的任何一個都需要自由創建文件夾等,並且希望確保存在絕對在子文件夾中自由創建人:S

請問有人可以幫忙嗎?

+0

你有沒有想出一個很好的解決這個? – Mike 2012-11-22 18:47:53

回答

0
RewriteEngine On 

# Rewrite the main domain 
RewriteCond %{HTTP_HOST} !sub.maindomain.com 
RewriteCond %{REQUEST_URI} !^/mainsite/.* 
RewriteRule ^(.*)$ /mainsite/$1 [L] 

# Rewrite the sub domain 
RewriteCond %{HTTP_HOST} sub.maindomain.com 
RewriteCond %{REQUEST_URI} !^/sub/.* 
RewriteRule ^(.*)$ /sub/$1 [L] 

你需要讓這個它不/ mainsite目錄不僅僅是根(/ mainsite)內匹配任何文件。我想你會需要對子域也做同樣的事情。

+0

!^/mainsite /.*我和!^/mainsite /(貪婪正則表達式)是一樣的。您還需要在「sub.maindomain.com」中轉義點,否則subbmaindomain.com會匹配,甚至subbmaindomainccom.org甚至subbmaindomainccom.maindomain.com ;-)無論如何,我仍然在思考最優雅的解決方案。 – Capsule 2011-02-22 22:01:12

+0

的確如此,你確實需要避開這些點。不知道貪婪的正則表達式,認爲你需要。* – RedSoxFan 2011-02-22 22:10:35

0

實際嘗試這個,如果你還在尋找一個答案

RewriteEngine On 
# Rewrite the main domain 
RewriteCond %{HTTP_HOST} !sub.maindomain.com 
RewriteCond %{REQUEST_URI} !^/mainsite/.* 
RewriteRule ^/mainsite/(.*)$ /mainsite/$1 [L] 

# Rewrite the sub domain 
RewriteCond %{HTTP_HOST} sub.maindomain.com 
RewriteCond %{REQUEST_URI} !^/sub/.* 
RewriteRule ^/sub/(.*)$ /sub/$1 [L]`