我想将变量附加到我的子域。 Apache mod_rewrite可以解析子域以确定要使用哪个虚拟主机条目吗?
我需要保留在我的通配符SSL证书中,因此我被锁定为以下子域格式:
https://subdomain.testing.mydomain.com
我希望更灵活地针对我的php库版本测试子域名。如果我可以将更多信息传递到子域而不仅仅是它的名称,那将是很好的。例如:
https://subdomain-option1-option2.testing.mydomain.com
我编写了一个php脚本来解析整个主机名,并从子域中提取$ option1和$ option2。然后我使用这些值来配置我的php库的哪个版本导入并运行代码。问题是我不想为子域和option1和option2的每个可能组合硬编码虚拟主机条目。我只希望Apache识别连字符分隔的子域的第一部分,并使用它来查找虚拟主机条目并在其目录中执行索引文件。
我需要网址在页面请求中保持不变。 Apache mod_rewrite规则中的正则表达式需要检测第一个子域并将所有内容提取到第一个连字符(如果有),然后使用该值查找相应的虚拟主机条目。有没有人之前做过这样的事情,或者这是Apache mod_rewrite可能无法处理的场景?
答案 0 :(得分:0)
在 RewriteCond 的正则表达式中,您可以将括号放在要捕获的 HTTP_HOST 的部分周围。这将设置数字变量(%1 ,%2 ,%3 等),然后您可以将其插入到替换字符串中重写规则:
RewriteCond %{HTTP_HOST} ^([a-z0-9]*)[\-]+[a-z0-9\-]+[\.]testing[\.]mydomain.com [NC]
RewriteRule (.*) /var/www/sites/%1$1 [L,QSA]