You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Windows Server 2012 R2的IIS上WordPress二级目录页面404问题求助

解决Windows Server 2012 R2上IIS下WordPress子目录与ASP.NET共存的404问题

我碰到过好多次这种ASP.NET站点根目录下挂WordPress子目录的场景,你的问题核心是URL重写规则的逻辑搞反了,而且匹配范围太窄,我给你一步步梳理解决方案:

1. 修正根目录ASP.NET站点的web.config重写规则

你原来的规则只匹配了wordpress/about-us这个特定页面,而且条件是当请求是文件或目录时才重写,这完全和WordPress的路由逻辑相反——WP需要的是当请求不是真实文件/目录时,把请求转发到index.php处理。

替换根目录web.config里的规则为:

<rule name="WordPress Subdirectory" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
  <match url="^wordpress/(.*)" />
  <conditions logicalGrouping="MatchAll">
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
  </conditions>
  <action type="Rewrite" url="wordpress/index.php/{R:1}" />
</rule>
  • ^wordpress/(.*):匹配所有以wordpress/开头的请求路径,覆盖你所有的文章、页面链接
  • negate="true":表示只有当请求的路径不是真实存在的文件或目录时,才触发重写
  • wordpress/index.php/{R:1}:把请求转发到WP子目录的index.php,同时保留原路径的参数(比如about-us),让WP的路由系统处理

2. 检查WordPress子目录的web.config(如果存在)

如果wordpress目录下有自己的web.config,建议暂时注释掉里面的重写规则,避免和根目录的规则冲突。之后如果需要单独配置子目录,可以用这个简化版规则:

<rule name="WordPress Internal" 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>

3. 确认WordPress的后台设置

登录WordPress后台,做这两个检查:

  • 设置→常规:确认“站点地址(URL)”是http://example.com/wordpress,“WordPress地址(URL)”如果是子目录安装,也填同一个地址就行
  • 设置→固定链接:选择“文章名称”(也就是/%postname%),然后点击保存更改——这一步会让WP更新内部的路由规则,同时尝试生成对应的重写配置(IIS下会更新子目录的web.config,但我们已经用根目录规则覆盖了,不过保存操作还是要做)

4. 验证IIS的URL Rewrite模块

确保你已经安装了URL Rewrite 2.0模块:打开IIS管理器,在“功能视图”里找有没有“URL Rewrite”的图标,如果没有,需要通过服务器管理器的“添加角色和功能”来安装这个模块——没有它的话,所有重写规则都不会生效。

5. 权限和PHP映射检查

  • 给wordpress目录添加IIS_IUSRS用户的读写权限,确保WP能读取文件,IIS能正确访问
  • 确认PHP的处理映射已经配置到wordpress目录(或者整个站点),确保.php文件能被IIS正确解析,不会返回静态文本或者404

做完这些步骤后,重启一下IIS站点,再访问example.com/wordpress/about-us试试,应该就能正常打开了。

内容的提问来源于stack exchange,提问作者dahnfalomi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:22:40