К сожалению, я вынужден использовать IIS6 для своего веб-сайта MVC. .net 4.0 добавляет функциональность, имитирующую глупый хак для работы URL-адресов без расширений в IIS6. Мой веб-сайт предназначен для использования перезаписи URL-адресов в целях SEO. URL-адреса ключевых слов, которые клиент хочет использовать, диктуют сложную схему перезаписи URL-адресов.
Проблемы с реализацией Microsoft этой функции действительно сводятся к переписыванию URL-адресов и попытке сопоставить шаблон. Я видел различные правила, которые пытаются удалить ужасный eurl.axd из URL-адреса, чтобы шаблоны совпадали. Я пытался использовать эти правила
RewriteRule ^(.)/eurl.axd/[a-f0-9]{32}(.)$ $1$2 или RewriteRule (.)eurl.axd/. 1 доллар
который действительно работает, но также создает другие проблемы, когда есть вложенные перенаправления. т. е. обработка старых URL-адресов новыми и т. д.
что происходит, так это то, что eurl.axd удаляется, а при перенаправлении isapi_filter не получает запрос, что приводит к ошибке IIS 404.
Повозившись с URL-адресами, я нашел это возможное решение.
RewriteRule ^generators/generator-parallel-capability/([^/])/([^/])$ /generators /htmlcontent/generator-parallel-capability/$1/$2 [NC,L]
он просто захватывает часть eurl.axd и перезаписывает ее в исполняемый URL-адрес с добавлением.
Есть ли способ лучше? У меня есть несколько сотен URL-адресов, соответствующих этому шаблону, и было бы неплохо, если бы одно правило обрабатывало их все.