多个Apache重写规则取决于域加上另一个rewriteCond中的rewriteCond

时间:2012-10-20 08:19:50

标签: apache mod-rewrite

美好的一天,请帮助我,我一直在努力解决这个“简单”的重写问题,这是我原来的代码:

######################################################################## Willowvine
RewriteCond %{HTTP_HOST} !^willowvine\.dev$

RewriteRule . - [S=1]

RewriteRule ^admin/(.*)$ admininistration/$1 [QSA,L]
######################################################################## EndRules

######################################################################## Dove Rules
RewriteCond %{HTTP_HOST} !^dove\.dev$

RewriteRule . - [S=2]

RewriteRule ^admin/(.*)$ admin_another/$1 [QSA,L] 
RewriteRule ^(.*)$ /client/recruiter/4021/$1 [QSA,L]
######################################################################## End Dove Rules

我一直收到这个错误:

  

由于可能,请求超出了10个内部重定向的限制   配置错误。使用'LimitInternalRecursion'来增加   必要时限制。使用“LogLevel debug”获取回溯。

基本上我想要做的就是这样做:

if ${HTTP_HOST} == 'willowvine.dev/'    rewriterule 1: admin/* goes to
administration/*   else if ${HTTP_HOST} == 'dove.dev'    rewriterule
1:  admin/* goes to admin_another      rewriterule 2: if((${HTTP_HOST}
+ ${HTTP_URI}) != 'dove.dev/admin') root folder must start from /path/to/folder/start/he

1 个答案:

答案 0 :(得分:0)

为第二条规则添加其他条件,以防止^(.*)$循环播放。您实际上可以合并而不是使用S标记来跳过:

######################################################################## Willowvine
RewriteCond %{HTTP_HOST} !^willowvine\.dev$
RewriteRule ^admin/(.*)$ admininistration/$1 [QSA,L]
######################################################################## EndRules

######################################################################## Dove Rules
RewriteCond %{HTTP_HOST} !^dove\.dev$
RewriteCond %{REQUEST_URI} !^/client/recruiter
RewriteRule ^(.*)$ /client/recruiter/4021/$1 [QSA,L]
######################################################################## End Dove Rules

或者只是保留原作:

######################################################################## Willowvine
RewriteCond %{HTTP_HOST} !^willowvine\.dev$

RewriteRule . - [S=1]

RewriteRule ^admin/(.*)$ admininistration/$1 [QSA,L]
######################################################################## EndRules

######################################################################## Dove Rules
RewriteCond %{HTTP_HOST} !^dove\.dev$

RewriteRule . - [S=2]

RewriteRule ^admin/(.*)$ admin_another/$1 [QSA,L] 


### add conditions here for URIs that you don't want the rule to get applied to
RewriteCond %{REQUEST_URI} !^/admin_recruiter
RewriteCond %{REQUEST_URI} !^/client/recruiter
RewriteRule ^(.*)$ /client/recruiter/4021/$1 [QSA,L]
######################################################################## End Dove Rules