mod_rewrite正则表达式子域加上文件夹

时间:2014-11-04 10:22:19

标签: regex .htaccess mod-rewrite redirect

我到处寻找这个解决方案,但没有看到我能在我的服务器上重新配置的足够好的匹配。

我想将school.mysite.com/math/映射到mysite.com/index.php?inst=school&sub=math

我可以做到一半但不能同时做到。

IE我可以通过mysite.com/index.php?sub=math获取mysite.com/math/:

RewriteRule ^/?([a-zA-Z_]+)/?$ index.php?sub=$1 [L] 

我可以将school.mysite.com发送到mysite.com/index.php?inst=school与

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

但我不能为我的生活让两人一起工作,我试过了

RewriteCond %{HTTP_HOST} ([a-zA-Z_]+).mysite.com/([a-zA-Z_]+)/?
RewriteRule ^(.*$) index.php?inst=$1&sub=$2 [L]

和一大堆其他变种,我得到404错误(比如上面的正则表达式获取)或者它只捕获第一个变量。

我错过了什么?

感谢

1 个答案:

答案 0 :(得分:1)

您可以使用此规则:

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]