Я пытаюсь получить пакет 301 URL Tracker для Umbraco, чтобы он мне понравился.
Моя цель - иметь возможность сопоставить старые URL-адреса (из другой CMS) с новыми URL-адресами Umbraco. В моей конкретной ситуации старый сайт основан на PHP и поэтому использует расширение файла .php (http://example.net/test.php -> http://example.net/test/) - но это может быть любое расширение не .aspx (asp, png и т. Д.). Проблема в том, что Umbraco не обрабатывает запросы на файлы .php, он отлично работает для .aspx и каталогов (URL-адреса без расширений).
Я пробовал разные вещи, чтобы заставить это работать. Прежде чем идти дальше, я должен отметить, что пул приложений находится в интегрированном режиме и .NET 4.0.
Я вроде как заставил его работать, определив пользовательскую ошибку в web.config:
<customErrors defaultRedirect="not-exists.aspx" />
Это запускает обработчики, определенные в NotFoundHandlers в конфигурационном файле Umbraco 404handlers.config. Но имеет побочный эффект возврата заголовка 302 Found до того, как URL-трекер 301 включится и обработает перенаправление 301. И это просто большое SEO "нет нет".
Затем я попытался явно создать модуль обработчика HTTP для файлов .php. Я успешно получил модуль System.Web.UI.PageHandlerFactory для обработки запроса на файл .php. Но это не вызывает ни одного из NotFoundHandlers в Umbraco.
Насколько я понимаю, интегрированный конвейер в IIS 7, все зарегистрированные модули должны попытаться обработать запрос (http://stackoverflow.com/questions/3765317/how-to-catch-non-aspx-files-with-a-http-module). Но, возможно, кто-нибудь может просветить меня по этому вопросу?
Другие также испытывают трудности с настройкой этой конфигурации: http://our.umbraco.org/projects/developer-tools/301-moved-permanently/feedback/7271-when-the-old-pages-are-not-from-umbraco
Чего мне не хватает при получении Umbraco для обработки запроса файлов не .aspx в режиме интегрированного конвейера?