WordPress多站点中如何通过.htaccess为特定子站点设置重定向
WordPress多站点.htaccess配置子站点专属重定向
我运营一个WordPress多站点,目前通过同一个.htaccess文件给多个子站点配置重定向,虽然能正常运行,但现在遇到问题:多个子站点存在相同路径的页面,需要给特定子站点(比如myrnainterior.com)设置专属重定向规则,避免影响其他子站点。当前直接使用Redirect指令的规则会对所有子站点生效,无法区分域名。
解决方法:用mod_rewrite结合域名匹配实现专属重定向
普通的Redirect指令不检查请求域名,属于全局规则。要实现子站点专属重定向,需使用mod_rewrite模块,通过RewriteCond匹配目标域名,再用RewriteRule执行定向操作。
具体配置示例
替换原有的Redirect规则,改用以下格式(确保这些规则放在WordPress默认重写规则的前面):
# 启用mod_rewrite(WordPress多站点已配置可省略) RewriteEngine On # 针对myrnainterior.com的专属重定向 RewriteCond %{HTTP_HOST} ^(www\.)?myrnainterior\.com$ [NC] RewriteRule ^interieur-styling/?$ /interieur/interieurstyling [R=301,L] RewriteRule ^interieurstyling/?$ /interieur/interieurstyling [R=301,L] RewriteRule ^renovatie/?$ /verkoopstyling [R=301,L] RewriteRule ^fotos-interieurstyling/?$ /projecten [R=301,L] RewriteRule ^fotos-verkoopstyling/?$ /projecten [R=301,L] RewriteRule ^fotos-renovatie/?$ /projecten [R=301,L] RewriteRule ^cookiebeleid/?$ /privacy [R=301,L] # 针对hetwapenvanrhoon.nl的专属重定向 RewriteCond %{HTTP_HOST} ^(www\.)?hetwapenvanrhoon\.nl$ [NC] RewriteRule ^brasserie/menukaart/lunch/?$ /brasserie/menukaart/lunchgerechten [R=301,L] RewriteRule ^brasserie/menukaart/lunchspecials/?$ /brasserie/menukaart/specials [R=301,L] RewriteRule ^hotel-historie/?$ /historie [R=301,L] RewriteRule ^terras-rhn42/?$ /terras [R=301,L] RewriteRule ^gasterhoon-groep/?$ /contact [R=301,L] RewriteRule ^menukaart/?$ /brasserie/menukaart [R=301,L] RewriteRule ^ek-voetbal/?$ /eetcafe [R=301,L] RewriteRule ^ek-voetbal/voetbalpoule/?$ /eetcafe [R=301,L] RewriteRule ^ek-voetbal/reserveren/?$ /reserveren [R=301,L] RewriteRule ^category/events/?$ /evenementen [R=301,L]
关键参数说明
RewriteCond %{HTTP_HOST} ^(www\.)?myrnainterior\.com$ [NC]:匹配请求的域名,(www\.)?兼容带www和不带www的访问,[NC]表示不区分大小写,避免大小写差异导致匹配失败。RewriteRule ^interieur-styling/?$ /interieur/interieurstyling [R=301,L]:匹配指定URL路径,/?$兼容带斜杠和不带斜杠的请求;R=301为永久重定向,测试阶段可改用R=302临时重定向,避免浏览器缓存错误规则;L表示匹配后停止执行后续规则,提升效率。
注意事项
- 规则位置:这些重定向规则必须放在WordPress自动生成的
# BEGIN WordPress注释块之前,否则会被WordPress的重写规则覆盖,无法生效。 - 缓存问题:301重定向会被浏览器缓存,测试时若需修改规则,建议先清除浏览器缓存,或改用302临时重定向调试。
- 模块启用:确保服务器已启用mod_rewrite模块,大部分Apache主机默认启用,未启用需联系主机商开启。
内容的提问来源于stack exchange,提问作者Yorlinq
相关产品推荐
相关产品推荐

