LAMP环境下域名重定向与子域名指向配置方案咨询(避免循环)
完美解决你的域名重定向+子域名指向需求(无循环)
嘿,我来帮你梳理下最优配置方案,分DNS解析和Apache虚拟主机两步走,彻底避免重定向循环,完全满足你的需求:
第一步:DNS记录配置
先把所有域名解析到你的LAMP服务器IP,确保请求能正确到达主机:
- 给
newwebsite.com添加A/AAAA记录,值为你的服务器公网IP - 给
website.com添加A/AAAA记录,值为同一服务器IP(必须,因为要处理old.website.com和website.com的重定向逻辑) - 给
old.website.com添加CNAME记录,值为website.com(或者直接A/AAAA记录到服务器IP,CNAME更方便后续IP变更时维护)
第二步:Apache虚拟主机配置
LAMP环境下,通过虚拟主机区分不同域名的请求,这是避免循环的核心:
1. 配置old.website.com的虚拟主机
这个虚拟主机直接指向你原website.com的根目录,不做任何重定向:
<VirtualHost *:80> ServerName old.website.com DocumentRoot /path/to/your/website.com/root # 替换成你原website.com的实际根目录路径 # 可选:添加日志等常规配置 ErrorLog ${APACHE_LOG_DIR}/old.website.com-error.log CustomLog ${APACHE_LOG_DIR}/old.website.com-access.log combined </VirtualHost>
2. 配置website.com的虚拟主机(重定向到newwebsite.com)
这个虚拟主机只处理website.com的请求,直接做301永久重定向,完全不影响old.website.com:
<VirtualHost *:80> ServerName website.com ServerAlias www.website.com # 如果需要处理www前缀的请求,加上这行 # 301永久重定向,会保留原请求路径(比如website.com/page1 → newwebsite.com/page1) Redirect permanent / https://newwebsite.com/ # 用HTTPS就写https,否则写http </VirtualHost>
3. 配置newwebsite.com的虚拟主机
这是你的新站点主虚拟主机,指向新站点的根目录:
<VirtualHost *:80> ServerName newwebsite.com ServerAlias www.newwebsite.com DocumentRoot /path/to/your/newwebsite.com/root # 可选:添加日志等常规配置 ErrorLog ${APACHE_LOG_DIR}/newwebsite.com-error.log CustomLog ${APACHE_LOG_DIR}/newwebsite.com-access.log combined </VirtualHost>
4. (可选)HTTPS配置
如果你的站点启用了SSL,记得给每个域名配置对应证书(比如用Let's Encrypt免费证书),并添加443端口的虚拟主机,逻辑和80端口一致:
old.website.com:443指向原根目录website.com:443重定向到https://newwebsite.comnewwebsite.com:443指向新站点根目录
关键避坑点(避免循环的核心)
- 一定要给
old.website.com单独配置虚拟主机,不让它被website.com的重定向规则匹配到 - 重定向规则仅作用于
website.com(包括www.website.com),完全不干扰old.website.com的请求 - 用301永久重定向,搜索引擎会更新索引,比临时的302更适合域名迁移场景
配置完成后,重启Apache服务生效:
# Debian/Ubuntu系统 sudo systemctl restart apache2 # CentOS/RHEL系统 sudo service httpd restart
内容的提问来源于stack exchange,提问作者user3632992
相关产品推荐
相关产品推荐

