Переадресация URL, когда нет доступных расширений - PullRequest
4 голосов
/ 02 января 2012

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

http://www.example.com/something1
http://www.example.com/something2
http://www.example.com/something3

до

http://www.example.com/something1.aspx
http://www.example.com/folder/something2.pdf
http://www.example.com/something3.aspx?id=10

и по-прежнему показывать исходный URL в браузере (под редиктом капота)

Среда - IIS 6 / Asp.Net 3.5 в Windows Server 2003 с пакетом обновления 2

Как бы я это сделал, используя web.config или IIS.

Я знаю, как обрабатывать перенаправления, если я могу сопоставить расширение aspnet_isapi.dll и использовать Context.RewritePath(string), но я не знаю, как это сделать для URL, которые не имеют расширений.

Ответы [ 3 ]

1 голос
/ 04 января 2012

Если вам необходимо использовать IIS6 и / или более старую платформу .Net, есть отличный инструмент от Helicon Tech, который реализует правила .htaccess в стиле apache для платформы Microsoft IIS. У них есть платная версия, но и бесплатная версия. Бесплатная версия ограничена обработкой только одного файла правил, в то время как платная версия может иметь много файлов правил, которые могут быть вложены в иерархическую структуру каталогов.

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

HeliconTech ISAPI Rewrite

РЕДАКТИРОВАТЬ: Просто чтобы уточнить, он поддерживает все основные типы перенаправлений, включая передачу содержимого от одного URL до любого URL презентации, который вы хотите. Пример документации по содержимому прокси

1 голос
/ 04 января 2012

Если вы можете перейти на ASP.NET 4, тогда существует гораздо более широкая поддержка перезаписи URL без расширений.

Однако, если вам нужно использовать ASP.NET 3.5 / IIS6, вы можете использовать блог ScottGu.пост здесь:

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

0 голосов
/ 08 января 2012

В IIS настройте пользовательскую страницу ошибки 404, например error404.aspx, который находится на вашем сайте. В пределах error404.aspx вы можете получить доступ к исходному URL-адресу, я думаю, к его Request.RawUrl (вам, возможно, придется это проверить), затем вы можете создать свое перенаправление или пересылку по своему усмотрению.

Это может помочь Доступ к исходному URL на странице перенаправления IIS7 404

Как это может http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/80cb8d8d-8fd8-4af5-bb3b-4d11fff3ab9c.mspx?mfr=true

...