使用正则表达式的 apache 虚拟主机定义

Posted

技术标签:

【中文标题】使用正则表达式的 apache 虚拟主机定义【英文标题】:apache virtual host definition with regex 【发布时间】:2012-06-25 13:23:27 【问题描述】:

对于开发项目,我使用主机文件将真实域指向 localhost。我将虚拟主机定义添加到 apache 配置文件中。我的问题是可以将所有“xyz.com”域重定向到“d:/xampp/htdocs/websites/xyz.com”目录吗?这样我就不需要每次都添加虚拟主机定义。

【问题讨论】:

我希望每个 *.com 域都转到“D:/xampp/htdocs/websites/”下的不同文件夹。 mywebsite.com 应该转到“D:/xampp/htdocs/websites/mywebsite.com”。 otherwebsite.com 应该转到 ""D:/xampp/htdocs/websites/otherwebsite.com"" 您可以编辑您的问题以添加此更新信息,而不是添加评论。 我发现,这可以通过 mod_vhost_alias 模块实现,但我没有经验。我会调查,当我找到解决方案时,我会在这里发布,以供分享。 【参考方案1】:

您可以在VirtualHostServerAlias 指令中使用通配符:

<VirtualHost *:80>
  # Official name is example.com
  ServerName example.com

  # Any subdomain *.example.com also goes here
  ServerAlias *.example.com

  DocumentRoot "D:/xampp/htdocs/websites/xyz.com"

  # Then rewrite subdomains into different directories
  RewriteEngine On
  RewriteCond %HTTP_HOST ^(.*)\.example.com$
  # Use the %1 captured from the HTTP_HOST
  # For example abc.example.com writes to websites/abc.com
  RewriteRule ^(.*)$ "D:/xampp/htdocs/websites/%1.com/$1" [L]
</VirtualHost>

【讨论】:

我希望每个 *.com 域都转到“D:/xampp/htdocs/websites/”下的不同文件夹。 mywebsite.com 应该转到“D:/xampp/htdocs/websites/mywebsite.com”。 otherwebsite.com 应该转到 ""D:/xampp/htdocs/websites/otherwebsite.com"" @bkilinc 抱歉,我没有时间早点完成。我恢复了我的答案以及将子域重写为目录名称的重写规则。

以上是关于使用正则表达式的 apache 虚拟主机定义的主要内容,如果未能解决你的问题,请参考以下文章

收集系统信息

JS之正则表达式

正则表达式验证邮箱格式是啥?

正则表达式

正则表达式原理

Apache 2.4:httpd conf 中别名的正则表达式