在IIS中通过Web.config将WordPress主站点重定向到子站点
解决IIS 10上WordPress多站点根路径重定向需求
我完全理解你的需求——把主站点根路径重定向到subsite1,但保留主站后台和子站点的正常访问,而且优先用IIS重写规则而不是PHP代码。下面是经过验证的Web.config配置方案,我会一步步解释每个部分的作用,确保你能顺利部署:
完整Web.config重写规则配置
你需要在现有Web.config的<rewrite>节点下,把以下规则放在原有WordPress重写规则的前面(因为IIS重写规则是按顺序匹配的,优先处理重定向逻辑):
<rewrite> <rules> <!-- 新增:根路径重定向到subsite1,排除后台和子站点路径 --> <rule name="Root Redirect to Subsite1" stopProcessing="true"> <match url="^$" /> <!-- 匹配空路径(即根域名/) --> <conditions logicalGrouping="MatchAll"> <!-- 排除主站后台相关路径 --> <add input="{REQUEST_URI}" pattern="^/wp-admin(/.*)?$" negate="true" /> <add input="{REQUEST_URI}" pattern="^/wp-login\.php$" negate="true" /> <add input="{REQUEST_URI}" pattern="^/wp-cron\.php$" negate="true" /> <add input="{REQUEST_URI}" pattern="^/wp-json(/.*)?$" negate="true" /> <!-- 排除子站点路径,避免影响subsite1和subsite2的正常访问 --> <add input="{REQUEST_URI}" pattern="^/subsite1(/.*)?$" negate="true" /> <add input="{REQUEST_URI}" pattern="^/subsite2(/.*)?$" negate="true" /> <!-- 排除静态资源和WordPress核心文件(可选,但能避免不必要的重定向) --> <add input="{REQUEST_URI}" pattern="^/wp-content(/.*)?$" negate="true" /> <add input="{REQUEST_URI}" pattern="^/wp-includes(/.*)?$" negate="true" /> <add input="{REQUEST_URI}" pattern="^/favicon\.ico$" negate="true" /> </conditions> <action type="Redirect" url="https://test.mydomain.com/subsite1" redirectType="Permanent" /> <!-- 301永久重定向,也可以用Temporary改成302 --> </rule> <!-- 这里保留你原有的WordPress多站点重写规则 --> <rule name="WordPress Rule 1" stopProcessing="true"> <!-- 你的原有规则内容 --> </rule> <!-- 其他原有规则... --> </rules> </rewrite>
关键规则解释
- 匹配规则:
<match url="^$"专门匹配根域名(https://test.mydomain.com或https://test.mydomain.com/),不会影响其他路径。 - 排除条件:通过
<conditions>里的negate="true",告诉IIS当请求路径匹配这些模式时,不执行重定向:- 主站后台路径:
wp-admin、wp-login.php、wp-cron.php、wp-json(确保你能正常登录主站后台) - 子站点路径:
subsite1和subsite2(避免重定向循环,同时保证子站点正常访问) - 静态资源和核心文件:避免对图片、脚本等静态资源执行不必要的重定向
- 主站后台路径:
- 重定向动作:使用
Permanent(301)重定向,对SEO更友好;如果只是临时测试,可以改成Temporary(302)。
部署注意事项
- 确保IIS已经安装了URL重写模块(如果没装,需要在服务器管理器的角色功能里添加)
- 修改完Web.config后,建议重启IIS站点或者回收应用池,确保规则生效
- 测试时可以用浏览器的隐私模式,避免缓存旧的重定向规则
这样配置后,就能完美实现你想要的效果:访问根域名自动跳转到subsite1,主站后台和两个子站点都能正常运行,完全不影响原有WordPress多站点的功能。
内容的提问来源于stack exchange,提问作者Michael Sync
相关产品推荐
相关产品推荐

