2011-09-29 69 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