You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache2虚拟主机DocumentRoot通配符重写需求

实现*.abc.net到对应*.xyz.org DocumentRoot的重写方案

没问题,我来帮你搞定这个Apache通配符子域名的重写需求!下面是一步步的具体实现步骤:

1. 确保启用必要的Apache模块

首先得确认mod_rewrite模块已经启用,这是URL重写的核心模块。如果还没启用,执行以下命令:

sudo a2enmod rewrite
sudo systemctl restart apache2

2. 修改虚拟主机配置

找到你管理通配符子域名的虚拟主机配置文件(通常位于/etc/apache2/sites-available/目录下,比如命名为wildcard.conf),针对*.abc.net的虚拟主机块添加重写规则:

<VirtualHost *:80>
    ServerName abc.net
    ServerAlias *.abc.net

    # 开启重写引擎
    RewriteEngine On

    # 捕获*.abc.net中的子域名部分(比如sub.abc.net里的sub)
    RewriteCond %{HTTP_HOST} ^([a-z0-9-]+)\.abc\.net$ [NC]
    # 将请求重定向到对应*.xyz.org的DocumentRoot路径
    RewriteRule ^(.*)$ /var/www/domains/%1.xyz.org/httpdocs$1 [L]

    # 如果你需要支持HTTPS,请在443端口的虚拟主机配置中添加相同的重写规则
</VirtualHost>

规则说明:

  • RewriteCond %{HTTP_HOST} ^([a-z0-9-]+)\.abc\.net$ [NC]:匹配所有以.abc.net结尾的子域名,用%1捕获子域名前缀(比如sub),[NC]表示匹配时不区分大小写。
  • RewriteRule ^(.*)$ /var/www/domains/%1.xyz.org/httpdocs$1 [L]:把用户请求的URI(比如/index.php)拼接成对应的*.xyz.org目录路径,[L]表示这是最后一条执行的规则,避免后续规则干扰。

3. 验证目录权限

确保Apache的运行用户(通常是www-data)对目标目录有读取权限,否则会出现403错误:

sudo chown -R www-data:www-data /var/www/domains
sudo chmod -R 755 /var/www/domains

4. 重启Apache生效配置

最后重启Apache服务,让新的配置生效:

sudo systemctl restart apache2

这样配置完成后,当用户访问http://sub.abc.net时,Apache会自动读取/var/www/domains/sub.xyz.org/httpdocs下的内容,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Pankaj Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:43:47