子域到MVC url映射 - 重写与多个规则的匹配

时间:2016-03-20 13:34:28

标签: regex apache .htaccess mod-rewrite url-rewriting

我想要映射
sub1.mydomain.comsub1.mydomain.com/index.php?sub1
sub1.mydomain.com/?aa=bbsub1.mydomain.com/index.php?sub1&aa=bb
sub1.mydomain.com/somethingsub1.mydomain.com/index.php?sub1/something
sub1.mydomain.com/something?aa=bbsub1.mydomain.com/index.php?sub1/somehting&aa=bb
这些也与sub2.mydomain.com。

没有重定向,就像SimpleMVCFramework为主域做的那样。 我之所以想使用sub1.mydomain.com作为mydomain.com/sub1(重新调用mydomain.com/index.php?sub1)的用户调用的别名。我将两个subs的根目录设置为与主域相同。

这是.htaccess代码(位于根目录中),但它的错误为500.

# Map subdomains to controller
RewriteCond %{HTTP_HOST} !^www # if the sub is not www
RewriteCond %{HTTP_HOST} ^(.*)\.mydomain\.com
RewriteCond %{QUERY_STRING} !(sub1|sub2) # preventing loops
RewriteRule ^/?$ /index.php?%1 [NC,QSA,L]  
# this meant to be match if url path is empty eg. sub1.mydomain.com/?aa=bb
RewriteRule ^(.+)$ /index.php?%1/$1 [NC,QSA,L]
# anytime else.

如果我简单地使用第二个角色,使用(.*)模式它匹配尾部斜杠(sub1.mydomain.com/index.php?sub1/),使用(.+)模式匹配这种方式: sub1.mydomain.com/index.php?sub1/index.php

提前致谢,
B'/ P>

1 个答案:

答案 0 :(得分:0)

解决。

RewriteConds仅适用于RewriteRule之后的第一个,我需要复制粘贴条件。