Windows服务器子目录部署WordPress子页面404问题求助
解决Windows服务器子目录部署WordPress的404问题
我帮你梳理下解决方案,你遇到的问题核心是原来的重写规则是针对根目录部署的WordPress,现在WP放在/blog子目录,规则路径没对应上,调整一下就能解决:
1. 调整web.config的重写规则
你有两种可行的配置方式,选一种即可:
选项A:修改根目录的web.config
把原来的规则替换成下面的代码,它会专门处理/blog开头的请求,将非文件/非目录的请求转发到/blog/index.php:
<rewrite> <rules> <rule name="WordPress Blog Subdirectory" stopProcessing="true"> <match url="^blog/(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="blog/index.php/{R:1}" /> </rule> </rules> </rewrite>
选项B:在/blog子目录单独添加web.config
如果不想改动根目录的配置,直接在/blog文件夹里新建一个web.config,用你原来的规则就行(因为这里的路径是相对/blog的,匹配*就会覆盖子目录下的所有请求):
<rewrite> <rules> <rule name="WordPress" patternSyntax="Wildcard"> <match url="*"/> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/> </conditions> <action type="Rewrite" url="index.php"/> </rule> </rules> </rewrite>
2. 确认WordPress后台的URL设置
登录WP后台,进入设置 > 常规,检查两个关键URL:
- WordPress地址(URL):必须填
https://你的域名.com/blog(对应WP的实际安装路径) - 站点地址(URL):如果你的WP站点就是通过
/blog访问,直接和上面的地址保持一致即可;如果想让WP作为整个域名的主站(比如访问根域名就打开WP),这里填https://你的域名.com,不过这种情况需要额外调整根目录规则,你当前的场景选前者就好。
3. 刷新固定链接设置
进入设置 > 固定链接,随便选择一个非“朴素”的选项(比如「文章名称」),然后点击保存更改。这个操作会让WordPress自动校验重写规则的有效性,同时更新内部的链接结构,确保所有页面路径都能正确解析。
做完这些步骤后,/blog下的其他页面应该就能正常访问了。如果还是有问题,记得检查一下Windows服务器的IIS是否已经安装并开启了URL Rewrite组件(这是重写规则生效的前提)。
内容的提问来源于stack exchange,提问作者Mark Seymour
相关产品推荐
相关产品推荐

