2008-09-28 3 views
1

Возможно настроить сервер, чтобы разрешить использование ссылок с использованием расширения .aspx и без него.Ссылки с расширением .aspx и без него

Если да, как я могу это настроить.

Я работаю на клиентском сайте, который использует umbraco. Я знаю, что он построил дружественную URL-доступность. К сожалению, сайт уже вживую и включил функцию для всего множества ссылок.

Проблема заключается в том, что они хотят использовать рекламные URL-адреса, например, www.sitename.com/promotion, не добавляя расширение .aspx. И мы не хотим беспокоиться о возможности переназначения URL-адресов на сайте и необходимости отслеживать все неработающие ссылки.

+0

Что именно вы хотите достичь? – 2008-09-28 20:18:12

ответ

1

Я сделал это раньше, написав простой HttpModule, пару примечаний:

  • Необходимо указать 404 ошибки в IIS на страницу aspx, в противном случае IIS не будет ссылаться на runtim ASP.NET e, и HTTPModule никогда не ударит.
  • Это лучшее, что можно поймать и перенаправить с тщеславия, а не как полнофункциональный urlrewrite.
 
    public class UrlRewrite : IHttpModule 
    { 
     public void Init(HttpApplication application) 
     { 
      application.BeginRequest += (new EventHandler(this.Application_BeginRequest)); 
     } 

     private void Application_BeginRequest(Object source, EventArgs e) 
     { 
      // The RawUrl will look like: 
      // http://domain.com/404.aspx;http://domain.com/Posts/SomePost/ 
      if (HttpContext.Current.Request.RawUrl.Contains(";") 
       && HttpContext.Current.Request.RawUrl.Contains("404.aspx")) 
      { 
       // This places the originally entered URL into url[1] 
       string[] url = HttpContext.Current.Request.RawUrl.ToString().Split(';'); 

       // Now parse the URL and redirect to where you want to go, 
       // you can use a XML file to store mappings between short urls and real ourls. 

       string newUrl = parseYourUrl(url[1]); 
       Response.Redirect(newUrl); 
      } 

      // If we get here, then the actual contents of 404.aspx will get loaded. 
     } 

     public void Dispose() 
     { 
      // Needed for implementing the interface IHttpModule. 
     } 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^