#asp.net
#asp.net
Вопрос:
ASP.net 4.0 / IIS7.
Я хочу, чтобы «псевдоним» одной веб-формы отображался как различные URL-адреса без расширения. Задана форма в моем веб-корне под названием «mySite.com/ColorWebForm456.aspx«:
-
Я хочу, чтобы он отображался в виде нескольких имен, например, mySite.com/Color , mySite.com/Colour , mySite.com/Colors , mySite.com/Coler и т.д., без создания папок и дублирующих форм с этими именами.
-
Я никогда не хочу mySite.com/ColorWebForm456.aspx отображаемый в браузере, он должен отображаться как mySite.com/Color , даже если пользователь каким-то образом получает его и вводит именно этот адрес ~.aspx.
-
Изменения будут учитывать несколько альтернативных вариантов написания, которые могут попытаться использовать пользователи — однако я не хочу, чтобы их «исправляли». Итак, если пользователь вводит 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 для одного и того же контента.