WordPress多站点htaccess条件逻辑:排除主域名跳转至www和HTTPS
WordPress多站点.htaccess条件重定向解决方案:排除指定主域名
没问题,这个需求完全可以通过给现有重定向规则添加简单的排除条件实现,而且绝对不会影响站点加载速度——.htaccess规则是按顺序执行的,我们只需要给目标主域名加一个“跳过后续规则”的判断就好,不会像逐个配置域名那样增加规则复杂度和执行开销。
这里提供两种简洁高效的实现方式,你可以根据偏好选择:
方式一:先排除主域名,再执行通用重定向
这种写法逻辑更清晰,后续如果要添加其他规则,也不会影响被排除的主域名:
<IfModule mod_rewrite.c> RewriteEngine On # 匹配主域名domain1.com,直接跳过所有后续重定向规则 RewriteCond %{HTTP_HOST} ^domain1\.com$ RewriteRule ^ - [L] # 对其余所有域名强制跳转至HTTPS + www版本 RewriteCond %{HTTP_HOST} (?!^www\.)^(.+)$ [OR] RewriteCond %{HTTPS} off RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] </IfModule>
关键说明:
RewriteCond %{HTTP_HOST} ^domain1\.com$:精准匹配非www的主域名,注意正则里的点号需要用反斜杠转义(\.),避免被当作通配符。RewriteRule ^ - [L]:表示对匹配到的请求不做任何URL修改,[L]标志告诉Apache这是最后一条要执行的规则,直接跳过后续所有重定向逻辑。- 如果你的主域名也需要同时排除www版本(比如
www.domain1.com),可以把条件改成:RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.com$,这样不管带不带www的主域名都会被排除。
方式二:将排除条件合并到重定向规则中
这种写法更紧凑,把排除逻辑和原有重定向条件结合在一起:
<IfModule mod_rewrite.c> RewriteEngine On # 仅对非domain1.com的域名执行HTTPS + www重定向 RewriteCond %{HTTP_HOST} !^domain1\.com$ RewriteCond %{HTTP_HOST} (?!^www\.)^(.+)$ [OR] RewriteCond %{HTTPS} off RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] </IfModule>
关键说明:
RewriteCond %{HTTP_HOST} !^domain1\.com$:感叹号表示“非匹配”,意思是只有当请求域名不是domain1.com时,才会继续检查后面的重定向条件。
额外注意事项:
- 记得把代码中的
domain1.com替换成你实际的主域名,不要忘记转义点号。 - 测试阶段建议把
R=301改成R=302(临时重定向),确认规则生效后再改回301永久重定向,避免浏览器缓存错误的重定向规则。 - 这种单正则判断的开销极小,完全不会影响站点加载速度,和你原来的规则执行效率几乎一致。
内容的提问来源于stack exchange,提问作者dgPehrson
相关产品推荐
相关产品推荐

