Псевдонимы URL: переписать, маршрутизация, не уверен

#asp.net

#asp.net

Вопрос:

ASP.net 4.0 / IIS7.

Я хочу, чтобы «псевдоним» одной веб-формы отображался как различные URL-адреса без расширения. Задана форма в моем веб-корне под названием «mySite.com/ColorWebForm456.aspx«:

  1. Я хочу, чтобы он отображался в виде нескольких имен, например, mySite.com/Color , mySite.com/Colour , mySite.com/Colors , mySite.com/Coler и т.д., без создания папок и дублирующих форм с этими именами.

  2. Я никогда не хочу mySite.com/ColorWebForm456.aspx отображаемый в браузере, он должен отображаться как mySite.com/Color , даже если пользователь каким-то образом получает его и вводит именно этот адрес ~.aspx.

  3. Изменения будут учитывать несколько альтернативных вариантов написания, которые могут попытаться использовать пользователи — однако я не хочу, чтобы их «исправляли». Итак, если пользователь вводит mySite.com/Colour URL НЕ перезаписывается на mySite.com/Color , но через ColorWebForm456.aspx обслуживается та же страница, что и запрошенный «mySite.com/Colour «.

Я видел так много статей об этом, что я даже не уверен, где это было бы лучше всего обработано: в Global.asax, перезаписи URL IIS7, web.config и т.д., И я даже не уверен, что это технически случай перезаписи URL или маршрутизации … ?

Ответ №1:

Вы можете достичь этого с помощью ASP.NET 4. маршрутизация для веб-форм или, если вы используете MVC, она тоже доступна: http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series.aspx

За исключением, возможно, # 3; это сработало бы, но вам пришлось бы явно указывать нужные варианты. В этом случае перезапись поддерживает соответствие регулярным выражениям, так что это может быть лучше для того, что вы ищете.

У меня возникли проблемы с настройкой перезаписи URL и различных аспектов веб-форм, так что будьте в курсе. Для модуля перезаписи потенциально требуется некоторая настройка (я тоже мог сделать это неправильно), где маршрутизация URL уже встроена и обрабатывается.

HTH.

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

1. Да, я видел эту статью и попробовал ее. Работает локально для меня (VS2010), но завершается сбоем при загрузке в нашу облачную службу IIS 7.5, выдавая ошибку 404.0, в частности, потому, что ожидается, что каталог с именем ~/ Color существует, а его нет.

Ответ №2:

Если у вас есть механизм перезаписи:

(используя синтаксис ISAPI Rewrite .htaccess)

 # redirect any requests for the filename back to the friendly URL
RewriteRule ^/colorWebForm4567.aspx(.*) /Color$1 [NC,R=302]

# rewrite /Color requests to the web form
RewriteRule ^/(Color|Colour)/(.*) /ColorWebForm4567.aspx$2
  

Ответ №3:

Следующая статья расширяет все это, но если вы будете использовать веб-хост после завершения подачи заявки, я бы сначала проконсультировался с хостинг-провайдером, чтобы узнать, предлагают ли они все, что вам нужно:

http://learn.iis.net/page.aspx/496/iis-url-rewriting-and-aspnet-routing/

Надеюсь, это поможет!

Ответ №4:

В качестве дополнительного примечания: поисковым системам не нравится, если вы публикуете контент под разными URL («дублирующий контент«).

Поэтому я бы рекомендовал использовать один (переписанный) URL, а не несколько (переписанных) URL для одного и того же контента.