IIS 10上URL Rewrite规则转发请求至WordPress应用失败问题
解决IIS根目录重写规则转发WordPress出现404的问题
针对你遇到的根目录重写规则失效(重定向正常但重写404)的问题,可按以下步骤排查解决:
调整根目录重写规则的
stopProcessing属性
默认情况下,重写规则的stopProcessing为true,会阻止后续子目录的规则执行。而WordPress所在的/wp/目录需要自身的重写规则将请求转发到index.php才能解析。修改根目录web.config中的规则,设置stopProcessing="false":<rule name="Forward to WordPress" stopProcessing="false"> <match url="^this-is-a-test$" /> <action type="Rewrite" url="/wp/{R:0}/" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> </rule>确认WordPress子目录的重写规则生效
检查/wp/目录下的web.config,确保存在正确的WordPress重写规则,该规则负责将所有非文件/目录的请求转发到index.php:<rule name="WordPress" stopProcessing="true"> <match url=".*" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="index.php" /> </rule>若该文件不存在,可通过WordPress后台的“固定链接”设置重新生成(需确保IIS有写入权限)。
配置WordPress的URL参数
在/wp/wp-config.php中添加以下定义,明确WordPress的安装路径和站点地址,避免因URL不匹配导致解析失败:define('WP_HOME', 'http://你的域名'); define('WP_SITEURL', 'http://你的域名/wp');检查IIS模块与处理程序映射
- 确认IIS已启用
URL Rewrite 2.1和FastCGI模块; - 确保根目录和
/wp/目录都配置了正确的PHP处理程序映射,且设置为“继承父级设置”,保证重写后的请求能被PHP解析。
- 确认IIS已启用
启用失败请求跟踪排查细节
在IIS管理器中对站点启用“失败请求跟踪规则”,跟踪404状态码。通过生成的日志文件,可查看重写后的请求是否正确传递到/wp/index.php,以及中间是否存在规则拦截或模块错误。
内容的提问来源于stack exchange,提问作者Remi Despres-Smyth
相关产品推荐
相关产品推荐

