Подстановочные знаки для 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 ответа

Это решение, но не элегантный способ (ИМХО):

  1. Создать виртуальный каталог
  2. Пусть он указывает на папку с файлами (в данном случае плагин PHP)
  3. Дайте ему соответствующие разрешения
  4. Измените параметры конфигурации для виртуального каталога в IIS и убедитесь, что сопоставление с подстановочными знаками для этого каталога удалено.

Это работает как очарование для моей ситуации. Однако есть ли способ не иметь дело с виртуальными каталогами?

Из того, что я понял, проблема в том, что ASP.NET пытается направить ваши PHP-запросы, поэтому я бы добавил StopRoutingHandler() к вашим маршрутам в global.asax. Примерно так должно работать:

routes.Add(new Route("{resource}.php/{*pathInfo}", new StopRoutingHandler()));

Изменить: Помните, что маршруты обрабатываются по порядку, поэтому я бы добавил это в начало ваших маршрутов.

Проблема в том, что расширение PHP необходимо зарегистрировать.

  1. В диспетчере IIS щелкните правой кнопкой мыши веб-сайт по умолчанию -> Свойства -> Домашний каталог -> Конфигурация
  2. В разделе "Сопоставления приложений" убедитесь, что файл.php добавлен и указывает на PHP.EXE. Должна быть такая запись: расширение.php, путь к исполняемому файлу C:\PHP\PHP.EXE %s %s
Другие вопросы по тегам