0

我想将变量附加到我的子域。Apache mod_rewrite 可以解析子域以确定要使用的虚拟主机条目吗?

我需要保留在我的通配符 SSL 证书中,因此我被锁定为以下子域格式:

https://subdomain.testing.mydomain.com

不过,我希望更灵活地针对我的 php 库版本测试子域。如果我可以将更多信息传递给子域,而不仅仅是其名称,那就太好了。例如:

https://subdomain-option1-option2.testing.mydomain.com 

我编写了一个解析整个主机名并从子域中提取 $option1 和 $option2 的 php 脚本。然后,我使用这些值来配置要导入和运行代码的 php 库版本。问题是我不想为子域和 option1 和 option2 的每个可能组合硬编码一个虚拟主机条目。我只想让 Apache 识别连字符分隔的子域的第一部分,并使用它来查找虚拟主机条目并在其目录中执行索引文件。

我需要 url 在页面请求中保持不变。Apache mod_rewrite 规则中的正则表达式将需要检测第一个子域并提取直到第一个连字符(如果有)的所有内容,然后使用该值查找适当的虚拟主机条目。以前有没有人做过这样的事情,或者这是 Apache mod_rewrite 可能无法处理的场景?

4

1 回答 1

0

RewriteCond的正则表达式中,您可以在要捕获的HTTP_HOST部分周围放置括号。这将设置数字变量(%1%2%3等),然后您可以将其插入到RewriteRule的替换字符串中:

RewriteCond %{HTTP_HOST} ^([a-z0-9]*)[\-]+[a-z0-9\-]+[\.]testing[\.]mydomain.com [NC]
RewriteRule (.*) /var/www/sites/%1$1 [L,QSA]
于 2013-06-25T23:24:14.893 回答