Подстановочные знаки для ASP.NET и проблемы с PHP
У меня есть приложение, написанное на.NET 3.5 с C# в качестве языка. Я использую веб-формы, но использую URL-маршрутизацию с маршрутами, определенными в моем глобальном файле. Все работает как положено. Для правильной работы симпатичных путей (см. User/665 вместо user.aspx? Uid=665) мне пришлось добавить сопоставление с подстановочными знаками в IIS5.1 (локальный блок, не тестовый, промежуточный или производственный) файл aspnet_isapi для платформы 2.0. Все отлично работает
Теперь моему сайту нужен плагин для PHP. Однако файлы PHP теперь обслуживаются ASP.NET из-за сопоставления подстановочных знаков и, следовательно, не обрабатываются интерпретатором PHP. Есть ли способ обойти это? Должен ли я добавить какой-нибудь обработчик в мое веб-приложение, которое будет принимать все запросы PHP, обрабатываемые средой ASP.NET, и направлять их в механизм PHP? Есть ли более простой способ? Может быть, способ исключить их в файле web.config (файлы PHP) и использовать их для соответствующего механизма PHP?
Спасибо всем! -Стив
3 ответа
Это решение, но не элегантный способ (ИМХО):
- Создать виртуальный каталог
- Пусть он указывает на папку с файлами (в данном случае плагин PHP)
- Дайте ему соответствующие разрешения
- Измените параметры конфигурации для виртуального каталога в IIS и убедитесь, что сопоставление с подстановочными знаками для этого каталога удалено.
Это работает как очарование для моей ситуации. Однако есть ли способ не иметь дело с виртуальными каталогами?
Из того, что я понял, проблема в том, что ASP.NET пытается направить ваши PHP-запросы, поэтому я бы добавил StopRoutingHandler() к вашим маршрутам в global.asax. Примерно так должно работать:
routes.Add(new Route("{resource}.php/{*pathInfo}", new StopRoutingHandler()));
Изменить: Помните, что маршруты обрабатываются по порядку, поэтому я бы добавил это в начало ваших маршрутов.
Проблема в том, что расширение PHP необходимо зарегистрировать.
- В диспетчере IIS щелкните правой кнопкой мыши веб-сайт по умолчанию -> Свойства -> Домашний каталог -> Конфигурация
- В разделе "Сопоставления приложений" убедитесь, что файл.php добавлен и указывает на PHP.EXE. Должна быть такая запись: расширение.php, путь к исполняемому файлу C:\PHP\PHP.EXE %s %s