2008-09-28 9 views
1

Il est possible de configurer un serveur pour permettre l'utilisation de liens avec et sans utilisation de l'extension .aspx.Liens avec et sans l'extension .aspx

Si oui, comment pourrais-je procéder à cette configuration?

Je travaille sur un site client qui utilise umbraco. Je sais qu'il a construit dans la convivialité de l'URL. Malheureusement, le site est déjà en ligne et active la fonctionnalité pour l'ensemble des liens.

Le problème est qu'ils veulent utiliser des URL promotionnelles comme www.sitename.com/promotion sans avoir à ajouter l'extension .aspx. Et nous ne voulons pas avoir la peine de permettre à l'URL de réécrire le site et d'avoir à traquer tous les liens brisés.

+0

Que voulez-vous accomplir exactement? –

+0

J'ai répondu à votre question dans mon édition. – Gthompson83

Répondre

1

Je l'ai déjà fait en écrivant un HttpModule simple, quelques choses à noter:

  • Vous devez pointer 404 erreurs dans IIS vers une page aspx, sinon IIS n'appellera pas le runtime ASP.NET e et le HTTPModule ne sera jamais touché.
  • Cela fonctionne mieux pour attraper et rediriger des URL de vanité, pas comme un urlrewrite complet.
 
    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. 
     } 
    } 
Questions connexes