Вопрос

Я хотел знать, есть ли решение, использующее IIS6 для приложения, чтобы избавиться от текста по умолчанию.aspx в URL.так, например, если пользователь нажимает:

www.website.com/default.aspx

браузер показывает только:

www.website.com/

Несмотря ни на что.Это просто для SEO.

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

Я очень ценю любую помощь.

Спасибо.Хосе

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

Решение

Если вам нужно что-то сделать с переписыванием URL-адреса, то все, что вам нужно сделать, это убедиться, что ваши ссылки указывают на правильный URL.

Если вы не исправите свои ссылки, браузеру решать, хочет ли он отображать фактическую ссылку, которую он запросил.

Если вы действительно хотите выполнить сложную работу, вы можете использовать некоторый javascript, чтобы заставить адресную строку браузера отображать все, что вам нравится, даже если она недействительна.

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

Я думаю, у ScottGu уже есть тема переписывания в ASP.NET рассмотрено: http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx.

Он освещает такие вещи , как:

  • Перезапись с использованием UrlRewriter.net, Перезапись ISAPI
  • ASP.NET Трюки, отправляющие ответ (попадание в понятную версию URL)

С вашей проблемой, я думаю, вам нужно использовать комбинацию, никогда не ссылающуюся на 'default.aspx' ie.ТОЛЬКО ссылка на '/'.Затем используйте файл Scott's Form Postback browser file, чтобы убедиться, что обратные отправки всегда попадают на ту же удобную версию URL.

Перенаправление 'default.aspx' на '/', которое затем обрабатывается 'default.aspx', для меня звучит как путь к катастрофе.Просто исправьте свои ссылки, чтобы гарантировать, что вы никогда не попадете на 'default.aspx' явно.

Я думаю, что самый простой способ изменить индекс результатов поиска (предполагая, что он знает о HTTP 301) - это написать небольшую функцию в вашем default.aspx's Page_Load, которая перенаправляет браузер, используя 301, перемещенный постоянно (или 302, перемещенный временно).

void Page_Load(...) {

    if(Request.Path.EndsWith("default.aspx", true/*case-insensitive*/, null)) {
       Response.StatusCode = 301;
       Response.StatusDescription = "Moved Permanently";
       Response.Headers.Add("Location", "/");
       HttpContext.Current.ApplicationInstance.CompleteRequest(); // end the request
    }

    // do normal stuff here
}

Если default.aspx установлен в качестве документа по умолчанию для обслуживания в IIS, а все ваши внутренние ссылки на сайт содержат URL-адреса без по умолчанию.aspx, тогда, я думаю, это должно сработать.

Хотя пользователь все еще может ввести default.aspx по умолчанию.aspx, поисковые роботы должны просто выбрать более дружественный URL-адрес из атрибутов вашей ссылки href.

Способ, которым я бы это сделал, - использовать Application_BeginRequest в общедоступном классе Global :System.Web.HttpApplication и проверьте HttpContext.Current.Запрос.URL для default.aspx, а затем используйте HttpContext.Current.Ответ.Перенаправьте оттуда, если вы это найдете.

Недостатком является то, что перенаправление не всегда так здорово, и это не сработает, если вы размещаете данные на этой странице default.aspx.Но вы не можете просто обмануть браузер, чтобы он показывал другой URL, хотя вы можете указать ASP.NET обслуживать любую страницу, которую вы хотите, для любого запроса.

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