Как убрать расширение .aspx из адреса страницы

Текущая ситуация: есть сайт, на нём довольно много страниц, адреса которых заканчиваются на .aspx, что есть совсем плохо (/about.aspx, вместо /about)
Довольно просто избавиться от расширений в путях, заюзав FriendlyUrlSettings

В RouteConfig или любом другом классе, отвечающим за маршрутизацию (лишь бы не Global.asax) необходимо уведомить RouteCollection о необходимости использования FriendlyUrlSettings:






Внимание: по умолчанию класс создаёт маршруты с именем AspNet.FriendlyUrls.SwitchView

Благодаря AutoRedirectMode = Permanent при обращении к странице отправляется 301 response code
Возможные значения:
  1. Permanent - 301 response code (поисковики и браузеры запомнят, что страница окончательно размещена по адресу, отданному в заголовке location)
  2. Temporary - 302 response code
  3. Off - вообще без редиректов, но работать будут оба варианта (и с aspx, и без)
Дополнительное интересное свойство:
SwitchViewUrl - адрес, принимающий запросы на переключение представления (десктопное/мобильное). 
Значением по умолчанию = __FriendlyUrls_SwitchView/{view}

Пример использования от MS: 


т.е. для переключения с мобильного представления (Site.mobile.master) на десктопное (Site.master) достаточно перейти по адресу:
/__FriendlyUrls_SwitchView/Desktop?ReturnUrl=%2f
или
/__FriendlyUrls_SwitchView/?ReturnUrl=%2f (Desktop по дефолту)

Установленное представление запоминается в файлах Cookies с именем FriendlyUrlsViewSwitcher, например, если перейти по адресу /__FriendlyUrls_SwitchView/ipad?ReturnUrl=%2f, то в кукисах будет значение FriendlyUrlsViewSwitcher=ipad
Но имейте ввиду, что мастер-страница Site.ipad.master не подхватится на лету

Комментариев нет:

Отправить комментарий

Можете оставить свой комментарий