本文介绍在 iis 中托管 asp.net 6 应用时,如何通过 web.config 配置排除 `/blog` 等子目录,使其绕过 aspnetcoremodulev2,转而由已注册的 php 处理器(如 fastcgi)接管请求。
在混合技术栈部署场景中(例如主站使用 ASP.NET 6,博客子目录使用 PHP),关键挑战在于 IIS 默认会将所有请求(包括子目录)统一交由 aspNetCore 处理器处理。若不显式干预,PHP 文件(如 /blog/index.php)将被 ASP.NET 拦截并返回 404 或错误响应。解决思路是:在 IIS 配置层面,针对特定路径移除 ASP.NET Core 处理器注册,从而让请求自然回落至其他匹配的 handler(如 PHP 的 PhpFastCgi)。
实现该目标最可靠、推荐的方式是利用 IIS 的
。此时,IIS 将跳过 ASP.NET Core 模块,转而根据文件扩展名(如 .php)和已配置的 PHP handler(需提前在 IIS 中安装并注册 PHP via FastCGI)进行后续处理。
以下为完整、可直接使用的 web.config 示例(置于站点根目录):
✅ 关键说明与注意事项:
通过以上配置,即可安全实现 ASP.NET 6 与 PHP 在同一 IIS 站点下的共存与路径级路由隔离,兼顾开发灵活性与生产稳定性。