Blog
home > blog > UrlRewrite e Postback: il problema sull'action del form in asp.net

Tag: SEO, Programmazione, .Net, tag

UrlRewrite e Postback: il problema sull'action del form in asp.net

Sperimentando l'UrlRewrite in un sito .net ci si scontra con un errore sui postback. Vediamo come risolverlo
di Maurizio Ceravolo
L'UrlReWrite è la tecnica di riscrivere gli indirizzi in un sito, in modo da rendere quest'ultimo più "amichevole" per un motore di ricerca. Come è noto nei siti dinamici, i contenuti e quindi le pagine non sono fatte a priori, ma generate a partire da un database. Come avviene su questo sito. Da qualche giorno abbiamo fatto anche noi la transizione all'UrlRewrite.

Nel primo mese di vita tutti le pagine erano richiamate tramite un parametro in query string. Ad esempio chiamando l'indirizzo /blog.aspx?id=50, dove id=50 rappresenta il numero di record da richiamare dal database. Con l'UrlRewrite l'indirizzo diventa /blog/50/microsoft-windows-server-e-zend-server-angeli-e-demoni-insieme.aspx sicuramente più lungo ma meno criptico. 

Che vantaggi ci porta? Primo fra tutti, quando distribuiamo il link, già da questo è possibile sapere quale sarà il contenuto dell'articolo, essendo presente il titolo già nell'url. Dal punto di vista dei motori di ricerca, abbiamo la possibilità di indicizzare più pagine perchè molti motori di ricerca minori ignorano i parametri delle pagine, mentre i maggiori, che sono in grado di leggerli, così possono indicizzare come parole chiave anche il testo nell'url.

Se andate ad implementare una delle tecniche per fare l'UrlReWrite, che sia con gli httphandler o con gli httpmodule, vi accorgete di un problema. Non funziona più il postback delle pagine. Quello che succede è che l'attributo action all'interno del tag form, che nel modello delle pagine di asp.net è autogenerato, continua a puntare all'url non riscritta.

La soluzione più facile per ovviare a questo problema è scrivere nel Page_Load delle pagine (meglio ancora ereditare tutte le pagine da una pagina base ed inserire il seguente codice nella Page_Load della pagina base) il seguente codice:

HttpContext.Current.RewritePath(HttpContext.Current.Request.RawUrl); //c#

HttpContext.Current.RewritePath(HttpContext.Current.Request.RawUrl) 'VB.net

Se usate asp.net Ajax, con questa tecnica avrete qualche problemino con gli extender, in tal caso non va bene come soluzione e dovrete implementarne una un pochino più sofisticata. Che sarà argomento di un futuro post.
Post correlati
2011
19
Aprile
Cambiare l'indirizzo del proprio sito senza penalizzare il pagerank
Maurizio Ceravolo
Quando si decide di spostare il proprio sito ad un altro indirizzo occorre fare alcune operazioni per non perdere il pagerank guadagnato con tanto lavoro.
2010
17
Novembre
Vb.net, creare una data in formato W3C per una sitemap
Maurizio Ceravolo
Per creare una sitemap.xml occorre inserire le date nel formato definito dal W3C, che non è nativo in .net. Vediamo un modo semplice per generarle.
2011
20
Giugno
Facebook rilascia l'SDK c#
Maurizio Ceravolo
Facebook ha appena rilasciato l'SDK ufficiale per sviluppare applicazioni che si interfacciano con Facebook utilizzando il c#.
2010
13
Ottobre
Inviare fax da una applicazione usando .net
Maurizio Ceravolo
Descrizione di due opzioni per mandare fax attraverso una proprio applicazione: collegandosi ad un servizio esterno o usando WinFax in interoperabilità
2011
15
Febbraio
.net: instanziare un web service con certificato scaduto
Maurizio Ceravolo
Richiamare un web service sotto https con certificato scaduto porta l'applicazione a sollevare un eccezione. Vediamo come ignorarla e fruire lo stesso del servizio.


Archivio Mensile Blog
Tag Cloud
Apple drone Facebook finanza geek Google Google+ Groupon humor innovazione iPad iPhone Microsoft Programmazione social network SQL Server Star Wars torrent video videogiochi
Ultimi Post
I migliori di oggi
I più popolari del mese
Top post