Как автоматически переназначить страницы .html на страницы .aspx? - PullRequest
2 голосов
/ 16 октября 2008

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

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

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

Ответы [ 5 ]

3 голосов
/ 16 октября 2008

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

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

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

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

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

1 голос
/ 23 октября 2008

Возможно, вы захотите заглянуть в пространство имен 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 голос
/ 16 октября 2008

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

вот что говорит ms о переписывании URL asp.net:

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

0 голосов
/ 16 октября 2008

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

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

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

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

0 голосов
/ 16 октября 2008

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...