Joomla4+Yootheme Pro4在IIS8.5删除布局报405 Method Not Allowed
IIS 8.5 部署 Joomla 4 + Yootheme Pro 4 解决 DELETE 请求 405 错误方案
1. 调整 web.config 里的 PHP 处理器 HTTP 动词
找到 web.config 中处理 PHP 的 <handlers> 节点,把原有条目里的 verb 属性加上 DELETE,让 IIS 允许这个动词传递给 PHP:
<handlers> <add name="PHP_via_FastCGI" path="*.php" verb="GET,HEAD,POST,DELETE" modules="FastCgiModule" scriptProcessor="你的PHP实际安装路径\php-cgi.exe" resourceType="Either" requireAccess="Script" /> </handlers>
记得把你的PHP实际安装路径换成你服务器上的真实路径,比如C:\Program Files\PHP\v8.1。
2. 增加 URL 重写规则支持 DELETE 请求
Joomla 依赖 URL 重写处理 REST 风格请求,需要在 web.config 的 <rewrite> 节点下添加规则,保证 DELETE 请求能正确路由到 index.php:
<rewrite> <rules> <rule name="Joomla_SEF" stopProcessing="true"> <match url="^(.*)$" 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="index.php/{R:1}" /> </rule> <!-- 避免 DELETE 请求被 IIS 拦截 --> <rule name="Allow DELETE for Joomla" stopProcessing="false"> <match url="^index.php" /> <conditions> <add input="{REQUEST_METHOD}" pattern="DELETE" /> </conditions> <action type="None" /> </rule> </rules> </rewrite>
3. 禁用 IIS 的 WebDAV 模块
WebDAV 模块常会拦截 DELETE 请求导致405错误,直接在 web.config 里禁用它:
<system.webServer> <modules> <remove name="WebDAVModule" /> </modules> <handlers> <remove name="WebDAV" /> </handlers> </system.webServer>
4. 检查 PHP 配置
打开 php.ini,确认 allow_url_fopen 设置为 On;如果服务器安装了安全模块(比如 mod_security),需确保它没有拦截 DELETE 请求。
5. 重启 IIS 服务
修改完所有配置后,务必重启 IIS 服务,确保新配置生效。
内容的提问来源于stack exchange,提问作者iBison
相关产品推荐
相关产品推荐

