Apache虚拟主机配置:将主域名下特定目录链接重定向至子域名
Apache虚拟主机配置:将主域名下特定目录链接重定向至子域名
我来帮你搞定这个重定向需求!根据你描述的场景,咱们可以写一套更通用的Rewrite规则,既能覆盖你提到的所有旧链接模式,也能兼容带elem查询参数的情况,不用单独维护两套规则。
首先提醒下:Bitnami WordPress的虚拟主机配置文件通常在/opt/bitnami/apache/conf/vhosts/wordpress-vhost.conf(单站点也可能在httpd-vhosts.conf),修改前记得先备份原文件,避免出错。
接下来把下面的规则添加到主域名的<VirtualHost>块里(要放在WordPress自带的Rewrite规则之前,比如# BEGIN WordPress注释块上方):
# 匹配主域名(支持www.example.com或example.com两种格式) RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC] # 匹配所有旧路径模式,覆盖你提到的四种旧链接格式 RewriteRule ^/?(?:topics|education/topics|literacy/topics)/[^/]+(?:/[^/]+)?/show/?$ https://www.subdomain.example.com%{REQUEST_URI} [R=301,L,NC,NE]
咱们拆解下这个规则的逻辑:
RewriteCond:确保只对主域名的请求生效,不会影响子域名本身的服务RewriteRule的正则部分:(?:topics|education/topics|literacy/topics):匹配开头的三类路径前缀[^/]+:匹配第一个可变目录(对应你说的vardir)(?:/[^/]+)?:可选的第二个可变目录(兼容双vardir的情况)/show/?:匹配末尾的show路径,最后的?允许路径末尾带或不带斜杠
- 标记部分
[R=301,L,NC,NE]:R=301:永久重定向,对SEO友好L:执行完这条规则后停止后续规则处理NC:忽略大小写匹配,避免因大小写差异导致跳转失败NE:不转义查询参数,保证?elem=icon_file969这类参数完整传递
你之前针对elem参数写的规则可以删掉了,因为这条通用规则已经覆盖了带任何查询参数的情况,包括elem参数的场景。
配置修改完成后,重启Bitnami的Apache服务让规则生效:
sudo /opt/bitnami/ctlscript.sh restart apache
你可以用浏览器访问旧链接测试,或者用curl命令验证:
curl -I https://www.example.com/education/topics/test/test/show?elem=icon_file969
如果返回的Location头指向子域名的对应链接,就说明规则生效了。
备注:内容来源于stack exchange,提问作者Josh Hawkes
相关产品推荐
相关产品推荐

