2014-11-04 82 views
0

我想在一个.htaccess文件中得到3个mod_rewrites一起工作。多个mod_rewrite冲突

我想以下几点:

school.mysite.com => mysite.com/index.php?inst=school

mysite.com/french => mysite.com/subject.php?子=法国

school.mysite.com/french => mysite.com/subject.php?inst=school &子=法语

我以前曾得到了前两个工作,但不能为生命我得到第三个工作。 一个星期,我屈服了,并要求帮助这里后,幸运的是我anubhava给我的解决方案真的很快有:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^([a-zA-Z_]+)\.mysite\.com$ [NC] 
RewriteRule ^([a-zA-Z_]+)/?$ index.php?inst=%1&sub=$1 [L,QSA] 

对自己作品的代码完美,但我想上一棒的月亮还希望其他2仍然沿着它工作...而他们不。

从那以后,我一直对他们马不停蹄地又可以得到受一个用下面的代码

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 
RewriteCond %{REQUEST_URI} ^/([a-zA-Z_]+)/?$ 
RewriteRule ^(.*)$ subject.php?sub=%1 [L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^([a-zA-Z_]+)\.mysite\.com$ [NC] 
RewriteRule ^([a-zA-Z_]+)/?$ index.php?inst=%1&sub=$1 [L,QSA] 

与它一起工作,但我不能让子域沿侧的工作吧,我尝试是...

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^([a-zA-Z_]+)\.mysite\.com$ [NC] 
RewriteCond %{REQUEST_URI} ^$ 
RewriteRule ^(.*)$ index.php?institute=%1 [L] 

我想通过检查URI是否为空可能会触发它。 而不是在我的头靠在墙上再打一个星期,我想我会问在第一天结束:) 如果它有任何区别,他们在.htaccess文件中的子域检查顺序,主题检查,然后合并检查。

我假设我的逻辑有问题,请帮忙。

问候

+0

如果你最终得到一个空白的'inst'参数,这有什么关系吗?即'inst =&school = french'会好吗? – arco444 2014-11-04 16:28:20

+0

嗨arco444,不应该不重要,一些逻辑可以很容易地应用到页面来检查那个 – Zenonline 2014-11-04 19:02:07

回答

1

,如果你命令他们如下它应该工作:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^([a-zA-Z_]+)\.mysite\.com$ [NC] 
RewriteRule ^([a-zA-Z_]+)/?$ subject.php?inst=%1&sub=$1 [L,QSA] 

RewriteCond %{HTTP_HOST} ^([a-zA-Z_]+)\.mysite\.com$ [NC] 
RewriteRule ^/?$ index.php?inst=%1 [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 
RewriteRule ^([a-zA-Z_]+)/$ subject.php?sub=$1 [L,QSA] 

首先将匹配一个子的请求URI,第二子站点一空白的uri,第三个没有uri的子域。前两个的顺序很重要,如果你想的话,第三个可能是第一个。

+0

嗨arco444。子域只有一点仍然不适用于我:(它不创建一个查询字符串,$ _GET数组是完全空的。我已经尝试了它自己(与其他规则注释掉),它确实不工作 – Zenonline 2014-11-04 19:12:48

+1

当你删除'RewriteCond%{REQUEST_FILENAME}!-d'时,它应该可以工作 – 2014-11-04 20:43:03

+0

对不起以前的消息被截断......感谢Olaf做到了这一招!一切都很完美......我发现如果我删除复合的主题和学校墙它也差不多工作OK ...因为当我使用复合规则,它发送给我的索引,而不是主题页面,但正如说你的修复使所有工作正确再次感谢arco444和奥拉夫Dietsche – Zenonline 2014-11-05 08:00:31