【发布时间】:2014-11-04 16:14:38
【问题描述】:
我正在尝试让 .htaccess 文件中的 3 个 mod_rewrites 一起工作。
我想要以下:
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 文件中的顺序是子域检查、主题检查,然后是组合检查。
我假设我的逻辑在某个地方有缺陷,请帮忙。
问候
禅
【问题讨论】:
-
如果你最终得到一个空白的
inst参数,这有关系吗?即inst=&school=french可以吗? -
嗨,arco444,没关系,一些逻辑可以很容易地应用于页面来检查
标签: apache .htaccess mod-rewrite redirect