Я знаю, что вы заявили, что не хотите использовать модуль перезаписи в IIS, поскольку он «добавляет дополнительную нагрузку на IIS», но на самом деле использование IIS для их обработки будет менее интенсивным, чем переход в ваше приложение.сделать то же самое (хотя оба они чрезвычайно малы по ресурсам).Если вы хотите проигнорировать запрос с минимальной нагрузкой на IIS и пропускную способность, я бы предложил следующее
<rewrite>
<rules>
<rule name="Fail PHP requests">
<match url=".*"/>
<conditions>
<add input="{URL}" pattern="*.php*" />
</conditions>
<action type="AbortRequest" />
</rule>
</rules>
</rewrite>
Это перезапись с типом действия, установленным в AbortRequest, полностью разрывает HTTP-соединение и сбрасываетзапрос, ошибки 404 или 403 не возвращены.Взято из Изучите IIS в разделе «Создание блока доступа».
РЕДАКТИРОВАТЬ - Поскольку у ОП есть проблемы с использованием модуля перезаписи и производительности, яЯ собираюсь представить второй вариант, который все еще может перехватить запрос .php без использования модуля перезаписи.IIS7 и более поздние версии также поддерживают фильтрацию запросов и, согласно Learn IIS, фильтрация запросов ... ... 1010 *
Модуль фильтрации запросов запускается в начале конвейера обработки запросов путем обработки события BeginRequest.Модуль оценивает метаданные запроса, такие как заголовки, строка запроса, длина содержимого и т. Д., Чтобы определить, соответствуют ли метаданные запроса какому-либо существующему фильтру.Если есть совпадение, модуль генерирует ответ 404 (файл не найден), а затем сокращает оставшуюся часть конвейера IIS
Для реализации добавьте следующий раздел в ваш web.config:
<configuration>
<system.webServer>
<security>
<requestFiltering>
<fileExtensions allowUnlisted="true" >
<add fileExtension=".php" allowed="false"/>
</fileExtensions>
</requestFiltering>
</security>
</system.webServer>
</configuration>
Информация от Перезапись URL-адреса против фильтрации запросов и Использование фильтрации запросов