Скрытие default.aspx из URL-адреса

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

www.веб-сайт.com/default.aspx

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

www.website.com/

Не важно что. Это только для SEO.

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

Любая помощь очень ценится.

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


person JRGuay    schedule 18.06.2009    source источник
comment
проигнорируйте мой ответ, я не видел требования IIS6.0   -  person Ayyash    schedule 03.07.2009


Ответы (5)


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

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

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

person Nippysaurus    schedule 18.06.2009

Я думаю, что СкоттГу уже освещал тему перезаписи в ASP.NET: asp-net.aspx" rel="nofollow noreferrer">http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx.

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

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

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

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

person Brendan Kowitz    schedule 02.07.2009
comment
Привет Брендан. Я работал со статьей Скотта раньше, чтобы создать правила для SEO, однако они не применяются для скрытия имени страницы по умолчанию. Это просто не работает. Спасибо, в любом случае. - person JRGuay; 03.07.2009

Я думаю, что самый простой способ изменить индекс результатов поиска (при условии, что он знает о HTTP 301) — это написать небольшую функцию в Page_Load вашего default.aspx, которая перенаправляет браузер с помощью 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
}
person Jeff Meatball Yang    schedule 02.07.2009
comment
Спасибо, Джефф. Я думаю, что ваше решение неплохое, но у меня есть ошибки бесконечного перенаправления. Спасибо. - person JRGuay; 03.07.2009
comment
Я сделал то же самое, но получил исключение: System.PlatformNotSupportedException: для этой операции требуется режим интегрированного конвейера IIS. - person Pankaj Jawale; 27.03.2015

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

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

person Ian Oxley    schedule 18.06.2009

Я бы сделал это так, чтобы использовать Application_BeginRequest в общедоступном классе Global: System.Web.HttpApplication и проверить HttpContext.Current.Request.URL для default.aspx, а затем использовать HttpContext.Current.Response.Redirect оттуда, если вы найдете Это.

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

person Jarrett Widman    schedule 18.06.2009
comment
Это не очень хорошо работает, это может привести к бесконечным редиректам. Спасибо! - person JRGuay; 03.07.2009