Скрытие default.aspx от URL - PullRequest
       21

Скрытие default.aspx от URL

3 голосов
/ 18 июня 2009

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

www.website.com / default.aspx

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

www.website.com /

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

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

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

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

Ответы [ 5 ]

3 голосов
/ 03 июля 2009

Я думаю, что ScottGu уже имеет тему переписывания в ASP.NET: 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 Form Postback, чтобы постбэки всегда попадали в одну и ту же дружественную версию URL.

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

2 голосов
/ 03 июля 2009

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

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
}
1 голос
/ 18 июня 2009

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

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

1 голос
/ 18 июня 2009

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

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

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

0 голосов
/ 18 июня 2009

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

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

...