IIS переписывает аля SO

Допустим, у меня есть сайт под названием

http://sub.example.com/

Я хочу переписать запросы, чтобы при вводе пользователем:

http://sub.example.com/id/имя-компании

Он должен быть внутренне переписан на:

http://sub.example.com/public.aspx

(Я предполагаю, что это похоже на то, как обрабатываются ссылки на SO-вопросы, где все вопросы имеют уникальный идентификатор и неуникальный заголовок, и только идентификатор используется для создания страницы. Таким образом, старая ссылка на вопрос все еще будет работать даже после того, как название вопроса было изменено)

Я пытаюсь сделать это: в Application_BeginRequest в global.aspx я сначала узнаю, что запрошенная страница является «общедоступной» страницей. Затем я делаю

HttpContext.Current.RewritePath("~/public/default.aspx", False)

Затем в ~/public/default.aspx я получаю идентификатор для динамического создания конкретной страницы компании (например, логотип и название компании). Это хорошо работает в моей локальной среде разработки, но на сервере кажется, что Application_BeginRequest не запускается. Я предполагаю, что это потому, что запрошенная папка не существует?

Как мне решить эту проблему или есть лучшие способы реализовать это поведение?


person Muleskinner    schedule 28.12.2010    source источник
comment
Идентификаторы вопросов являются частью маршрутов REST. Заголовки предназначены для SEO. Вероятно, вы не занимаетесь ни REST, ни усиленным SEO. Вместо этого я бы проигнорировал то, как это делает SO. Но да, вам нужна переадресация по умолчанию на несуществующие страницы.   -  person jcolebrand    schedule 28.12.2010


Ответы (1)


В IIS6 я использовал URL Rewriter (с открытым исходным кодом, бесплатно). В IIS 7 (или 7.5) я успешно использовал модуль URL Rewrite от Microsoft.

person Uwe Keim    schedule 28.12.2010