2014-10-08 63 views
0

试图在一个的.htaccess来处理多个潜在的重写在.htaccess合并多个可选变量重写

每个子应解析到一个文件夹 每个/ A /用户名应解析为/ A =用户名

我有每个规则自己的工作。但我无法弄清楚如何让他们同时工作。


例子(现在的工作):

  • www.domain.com - >无变化
  • black.domain.com - > www.domain.com/black(作品)
  • white.domain.com - > www.domain.com/white(作品)
  • www.domain.com/a/username - > www.domain.com/?a=username(作品)

我需要得到工作:

  • white.domain.com/a/username - > www.domain.com/white/?a=username(失败 - 只变成www.domain。 COM /白色)
  • black.domain.com/a/username - > www.domain.com/black/?a=username(失败 - 只变成www.domain.com/black)

RewriteEngine on 
RewriteRule ^index\.php?$/[NC,R,L] 

#RewriteRule ^(.*).domain.com$ http://www.domain.com/$1 [QSA,R=302,L] 

RewriteCond "%{HTTP_HOST}" !^www.* [NC] 
RewriteCond "%{HTTP_HOST}" !^admin.* [NC] 
RewriteCond "%{HTTP_HOST}" !^mail.* [NC] 
RewriteCond "%{HTTP_HOST}" !^email.* [NC] 

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

RewriteRule ^a/(.*)$ http://www.domain.com/%1?a=$1 [R=302,L] 

回答

1

尝试更改您的规则到:

RewriteEngine on 
RewriteRule ^index\.php?$/[NC,R,L] 

#RewriteRule ^(.*).domain.com$ http://www.domain.com/$1 [QSA,R=302,L] 

RewriteCond "%{HTTP_HOST}" !^www.* [NC] 
RewriteCond "%{HTTP_HOST}" !^admin.* [NC] 
RewriteCond "%{HTTP_HOST}" !^mail.* [NC] 
RewriteCond "%{HTTP_HOST}" !^email.* [NC] 
RewriteCond "%{HTTP_HOST}" ^([^\.]+).domain.*$ 
RewriteRule ^$ http://www.domain.com/%1 [R=302] 

RewriteCond "%{HTTP_HOST}" !^www.* [NC] 
RewriteCond "%{HTTP_HOST}" !^admin.* [NC] 
RewriteCond "%{HTTP_HOST}" !^mail.* [NC] 
RewriteCond "%{HTTP_HOST}" !^email.* [NC] 
RewriteCond "%{HTTP_HOST}" ^([^\.]+).domain.*$ 
RewriteRule ^a/(.*)$ http://www.domain.com/%1?a=$1 [R=302,L] 
+0

谢谢,让我99%固定! – srt8driver 2014-10-08 00:28:13

+0

这是行不通的:www.domain.com/a/username-> www.domain.com/?a=username所以我加了.. – srt8driver 2014-10-08 00:28:40

+0

RewriteRule^a /(.*)$ http://www.domain。 com /%1?a = $ 1 [R = 302,L]在你的版本之后,它一切正常 – srt8driver 2014-10-08 00:29:23