2011-09-28 43 views
1

EDITED子域掩蔽通過htaccess的

我建立一個通配符子域DNS區域我的服務器上,並希望有每個子域加載/用戶/ direcotry的使用.htaccess文件和國防部 - 內容改寫。

我想的URL在瀏覽器欄保持不變,這樣它顯示:

http://username.domian.com/../../ 

,同時顯示的內容:

http://www.domain.com/users/username/../../ 

此外,我想重定向(其他城市如果URL的WWW版本被訪問,那麼該URL將被髮送到子域版本。

我不太熟悉mod-rewrite規則,任何幫助將不勝感激!

謝謝。

回答

1

試試這個:

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$ 
RewriteCond %1 !=www 
RewriteRule ^(.*)$ http://www.domain.com/users/%1/$1 [R=302,L] 

如果用戶將訪問tom.domain.com/directory1/directory2/directory3/file.html他將被重定向(URL將在瀏覽器中改變)來www.domain.com/users/tom/directory1/directory2/directory3/file.html

如果那不是你真的以後(因爲我對你的這個「蒙面」概念有點困惑),那麼請更好地解釋你的要求,以便我可以調整規則。


UPDATE: 爲了保持URL在瀏覽器中保持不變:

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/users/ 
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$ 
RewriteCond %1 !=www 
RewriteRule ^(.*)$ /users/%1/$1 [L] 

有一個問題是:如果directory1將被稱爲users(如tom.domain.com/users/directory2/directory3/file.html),那麼這將無法工作 - - 這是你爲重寫付出的代價。 解決方案:users重命名爲獨特的內容(例如users_dir_123_abc等 - www.domain.com/users_dir_123_abc/tom/users/directory2/directory3/file.html)。

+0

謝謝!請參閱編輯的問題。 – dSquared

+0

@dSquared查看更新的答案 - 我沒有在現場服務器上測試,但應該工作得很好。 – LazyOne

+0

感謝您提供最新的答案。點擊頁面中的鏈接時,它非常有魅力;然而,當直接在瀏覽器中輸入URL時,它會重定向到username.domain.com/users/username/../../任何想法? – dSquared