2012-07-28 62 views
0

我有這個代碼來管理子域別名:瀏覽sub.domain.com它顯示domain.com/fp/sub。htaccess的子域別名

RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ 
RewriteRule (.*) /fp/sub/$1 

我有很多這些子域來設置。有沒有辦法讓這個過程自動化放置一些變量而不是正確的子域名/文件夾名稱?

我想這個代碼沒有成功

RewriteCond %{HTTP_HOST} ^(sub1|sub2)\.domain\.com$ 
RewriteRule (.*) /fp/$1/$2 

回答

1

弗朗西斯,首先糾正你的榜樣,規則應該是:

RewriteRule ^(.*) fp/%1/$1   [L] 

的%變量在過去的成功COND正則表達式匹配設置。

其次有很多的選擇如果您可以訪問系統或虛擬主機配置,如使用Rewrite Mapsmass virtual hosts。如果你沒有這種訪問權限僅限於.htaccess,那麼你需要使用一個或多個規則,就像你已經做的那樣。一個變體是使用目標目錄的存在性檢查,如:

RewriteCond %{HTTP_HOST}   ^(\w+)\.domain\.com$ 
RewriteCond %{DOCUMENT_ROOT}/fp/%1 -d 
RewriteRule (.*)     fp/%1/$1   [L] 

請注意,如果您使用的是共享的主機服務,這DOCUMENT_ROOT可能沒有正確設定在重寫執行,在這種情況下,您的SHS提供者將設置一個環境變量來做同樣的事情,例如%{ENV:DOCUMENT_ROOT_REAL}。做一個phpinfo找出來。有關如何調試的更多建議,請參閱Tips for debugging .htaccess rewrite rules

+0

謝謝你的工作 – 2012-07-28 16:42:56