Apache 多模块重写冲突

Apache 多模块重写冲突,apache,.htaccess,mod-rewrite,redirect,Apache,.htaccess,Mod Rewrite,Redirect,我正在尝试在一个.htaccess文件中进行3次mod_重写,以便协同工作 我希望: school.mysite.com=>mysite.com/index.php?inst=school mysite.com/french=>mysite.com/subject.php?sub=french school.mysite.com/french=>mysite.com/subject.php?inst=school&sub=french 我之前已经让前两个工作,但在我的一生中无法让第三个工作。 一

我正在尝试在一个.htaccess文件中进行3次mod_重写,以便协同工作

我希望:

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

mysite.com/french=>mysite.com/subject.php?sub=french

school.mysite.com/french=>mysite.com/subject.php?inst=school&sub=french

我之前已经让前两个工作,但在我的一生中无法让第三个工作。 一周后,我屈服了,在这里寻求帮助,幸运的是,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文件中

我想我的逻辑有缺陷,请帮忙

问候


Zen

如果您按如下顺序订购,它应该会起作用:

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。前两个的顺序很重要,如果需要,第三个可以是第一个。

如果最后得到一个空的
inst
参数,这有关系吗?i、 e.
inst=&school=french
可以吗?嗨,arco444,不,这不要紧,一些逻辑可以很容易地应用到页面上,以检查hi-arco444。“仅子域”位仍然不适用于我:(它不创建查询字符串,$\u GET数组完全为空。我自己尝试过它(其他规则已被注释掉),当您删除
RewriteCond%{REQUEST\u FILENAME}时,它不起作用!-d
,应该可以。很抱歉,前一条消息被截断了…谢谢Olaf,这是个好办法!一切都很好…我发现,如果我删除了复合主题和学校墙,它也几乎可以正常工作…当我使用复合规则时,它将我发送到索引,而不是主题页面,但正如所说的那样,您的修复使它正常工作再次感谢arco444和Olaf Dietsche