試試這個:
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
)。
謝謝!請參閱編輯的問題。 – dSquared
@dSquared查看更新的答案 - 我沒有在現場服務器上測試,但應該工作得很好。 – LazyOne
感謝您提供最新的答案。點擊頁面中的鏈接時,它非常有魅力;然而,當直接在瀏覽器中輸入URL時,它會重定向到username.domain.com/users/username/../../任何想法? – dSquared