2011-09-29 70 views
6

我用下面以通配符子域名重定向到相應的文件夾:htaccess的國防部重寫子域

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

我想補充一點,重定向任何人訪問直接/用戶/路徑重寫規則回到像這樣的子域版本:

www.domain.com/users/username/../../ => username.domain.com/../../ 

先謝謝您!

回答

10

事情是這樣的:

RewriteEngine On 

RewriteCond %{http_host} ^domain.com [nc] 
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,NC] 

RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC] 
RewriteRule ^users/([a-z0-9\-_\.]+)/?(.*)$ http://$1.domain.com/$2 [QSA,NC,R,L] 

你除了對問題列出的其他規則?如果是的話,把它們放在另一個之前。

如:

http://www.domain.com/users/abc?q=test => http://abc.domain.com/?q=test 
http://www.domain.com/users/abc/sub1/sub2 => http://abc.domain.com/sub1/sub2 
http://www.domain.com/users/abc/sub1/?q=test => http://abc.domain.com/sub1/?q=test 
+0

謝謝!但是,這似乎只適用於../users/username => username.domain.com,我需要它也適用於../users/username/sub1/sub2/ => username.domain.com/sub1/sub2 。這可能嗎? – dSquared

+0

我更新了我的答案 –

+0

非常感謝!這是完美的,它可以在www.domain.com和domain.com版本上運行嗎? – dSquared