Staticizzare gli URL con il global.asax

di Andrea Zani, in UserScript, ASP.NET, global.asax,

Anche se sarà implementato in maniera più semplice dalla prossima versione 2.0 di ASP.NET, il Framework ci mette a dispozione vari metodi per creare degli "alias" per il nome delle nostre pagine.
Ma che cosa si intende per alias?

Se ipoteticamente nel nostro sito per la visualizzazione dei dettagli di determinati articoli dobbiamo richiamare la pagina passando dei parametri, dovremo richiamarla con questo formato:

http://www.nomesito.xxx/articolo.aspx?codice=001

Niente di complesso, ma possiamo fare in modo di renderlo più semplice, in modo che possa essere ricordato più facilmente dai nostri visitatori (e abbia un rank di valutazione maggiore in motori di ricerca come Google):

http://www.nomesito.xxx/articolo001.aspx
http://www.nomesito.xxx/001.aspx

Per realizzare questo abbiamo a disposizione numerose tecniche, come l'utilizzo degli HttpHandler. Questa tecnica, anche se molto potente, comporta delle piccole complicazioni, come il dover modificare il web.config per l'aggiunta dell'handler personalizzato e la creazione di una classe apposita.

Esiste una tecnica molto più semplice che comporta la sola modifica del global.asax, sfruttando l'evento Application_OnBeginRequest:

Sub Application_OnBeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    Dim context As HttpContext = HttpContext.Current
    Dim oldPath As String = context.Request.Path.ToLower()
    Dim idx As Integer = oldPath.IndexOf("articolo")
    If idx <> -1 Then
        Dim fine As Integer = oldPath.IndexOf(".aspx")
        Dim codice As String = oldPath.Substring(idx + 8, fine - (idx + 8))
        context.RewritePath("articolo.aspx?codice=" + codice)
    End If
End Sub

Inserito questo codice nel global.asax, invece di chiamare la nostra pagina di esempio per i dettagli dell'articolo, potremo usare questo formato:
http://www.nomesito.xxx/articolo001.aspx

Questa tecnica comporta un solo problema, se così vogliamo chiamarlo: utilizzando in questa pagina dei PostBack, questi avranno l'effetto di riportare il client sull'URL originale.
Vedremo in un prossimo script una tecnica che evita questo problema.

Approfondimenti

#537 - Staticizzare gli URL con un HttpHandler
https://www.aspitalia.com/liste/usag/script.aspx?ID=537

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi