使用.htaccess将所有别名重定向到主域名的问题求助
解决.htaccess域名别名重定向与现有规则冲突的问题
直接给你调整后的完整.htaccess规则,完美兼容你现有需求,同时解决别名重定向的问题:
RewriteEngine On # 重定向所有域名别名(含带www的主域名)到HTTPS主域名 RewriteCond %{HTTP_HOST} !^maindomain\.com$ [NC] RewriteRule ^(.*)$ https://maindomain.com/$1 [R=301,L] # 强制HTTPS(针对直接访问http://maindomain.com的情况) RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] ErrorDocument 404 /404page.php IndexIgnore *
为什么之前的规则会出问题?
你之前尝试的规则跳转到http://www.maindomain.com,但你现有规则会立刻移除www前缀跳回http://maindomain.com,接着又触发HTTPS强制跳转,不仅多了两次不必要的跳转,顺序不对还容易触发循环。如果改成跳转到不带www的HTTP域名,同样会被HTTPS规则再次跳转,逻辑冗余。
新规则的逻辑
- 第一条规则优先处理域名别名:匹配所有不是
maindomain.com的域名(不管是拼写错误的maindomains.com,还是带www的www.maindomain.com),直接一步重定向到HTTPS的主域名,[L]标记会终止后续规则,避免多余处理。 - 第二条规则补全HTTPS强制跳转:只处理用户直接访问
http://maindomain.com的情况,确保主域名的HTTP请求也会跳转到HTTPS。
注意事项
- 把
maindomain.com替换成你实际的主域名。 - 测试阶段建议把
R=301改成R=302临时重定向,避免浏览器缓存永久重定向规则导致测试不便,确认没问题后再改回301。
内容的提问来源于stack exchange,提问作者Israel Thompson
相关产品推荐
相关产品推荐

