Как автоматически переназначить страницы .html на страницы .aspx?

StackOverflow https://stackoverflow.com/questions/208246

  •  03-07-2019
  •  | 
  •  

Вопрос

У нас есть веб-сайт;который до сих пор имел только HTML-страницы.Сейчас мы перерабатываем его в ASP .Net.

Это означает, что все страницы .html будут изменены на расширение .aspx.Проблема в том, что на эти страницы существует множество внешних ссылок, и мы не хотим сразу менять каждую ссылку на aspx.

Есть ли способ перенаправить ссылку со страниц .html на страницы .aspx?Например, есть ли способ, которым сервер проверяет указанный файл, обнаруживает, что он ссылается на страницу .html, и автоматически открывает страницу .aspx?

Это было полезно?

Решение

если вы выполняете какое-то переписывание URL-адресов, вы можете оставить все ссылки прежними и просто обслуживать страницы aspx, запрос index.html сопоставляется с index.aspx

вот что говорит MS о перезаписи URL-адресов asp.net:

http://msdn.microsoft.com/en-us/library/ms972974.aspx

Другие советы

Я бы воспользовался этой возможностью, чтобы оставить расширения (.html, .aspx и т. д.).

Для всех наших основных веб-сайтов мы теперь используем специальную систему сопоставления, при которой URI виртуальной страницы сопоставляется с определенной страницей .aspx (или .html).Это имеет несколько преимуществ:

  • Ваши посетители видят «более приятные» URI;
  • Вы можете реорганизовать свой сайт по своему усмотрению, незаметно, не нарушая существующие входящие ссылки;
  • Вы можете использовать динамические виртуальные URI, например, вместо /Product.aspx?p=Blah вы можете использовать /Products/Blah.

У нас есть собственная система, но я считаю, что в ASP.NET MVC теперь эта функция встроена.

(Если вы пойдете по этому пути, вы можете добавить устаревшие сопоставления для URI .html, которые указывают на ваши новые страницы .aspx).

Возможно, вы захотите изучить пространство имен ASP.NET System.Web.Routing, которое было добавлено в .NET 3.5 SP1, я полагаю:

http://blogs.msdn.com/mikeormond/archive/2008/05/14/using-asp-net-routing-independent-of-mvc.aspx

http://msdn.microsoft.com/en-us/library/system.web.routing.aspx

Вот как мы справились с подобной ситуацией.

  1. Настройте IIS для сопоставления расширения html с ASP.Net вместо его прямой обработки.

  2. В обработчике HttpApplication.BeginRequest проверьте, выполняется ли запрос для html-файла, который был перенесен в aspx, и если да, то вместо этого отправьте страницу aspx, перенаправив ответ.

  3. Если html-файл еще не сопоставлен, просто отправьте статический html-файл.

Как уже говорил Стасмит, вы не должны позволять раскрывать базовую технологию (и, конечно же, не предписывать), как выглядят ваши URI.Как уже упоминалось, лучший способ — вообще не показывать какие-либо расширения, но в текущей ситуации, возможно, можно настроить систему таким образом, чтобы файлы .html обрабатывались так, как если бы они были .aspx?

Я ничего не знаю о .NET, но предполагаю, что это возможно без необходимости проходить через множество препятствий.

Второй лучший подход — переписать URI, но это требует дополнительной работы со стороны сервера (незначительной, но в сумме).

(Не перенаправляйте с помощью метаобновления.Любое другое решение лучше.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top