【问题标题】:mod_rewrite regex sub domain plus foldersmod_rewrite 正则表达式子域加文件夹
【发布时间】:2014-12-31 04:50:02
【问题描述】:

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

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

我可以做任何一半,但不能同时做。

IE 我可以将 mysite.com/math/ 获取到 mysite.com/index.php?sub=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 错误(如上面的正则表达式的 get),要么它只捕获第一个变量。

我错过了什么?

谢谢

【问题讨论】:

    标签: regex .htaccess mod-rewrite redirect


    【解决方案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]
    

    【讨论】:

    • 1 周的挣扎在 5 分钟内解决,不知道我是想哭还是想笑。谢谢阿努巴瓦,你是明星
    • 为什么条件中的 .com$ 之后什么都没有,但在规则中,它只是被引用的那一点?...它工作得很好,我只是不明白
    • HTTP_HOST 仅匹配主机名而不匹配 URL。 URI 在此规则中与 RewriteRule 匹配。
    • 再次感谢 anubhava,我意识到一个星期的挠头只是一个开始,但我已经到了那里
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    相关资源
    最近更新 更多