Ancora su ModelVC, la nostra applicazione preferita :) Previously, on ModelVC:
- Introduzione ai repository
- Architettura interna dei repository
- La cache
- Come funziona CacheThis
- I servizi
Le tecniche di SEO (Search Engine Optimization) sono molto importanti per un'applicazione web. Fanno la differenza tra il farvi trovare e non farvi trovare dai vostri utenti. Alcune tecniche ben collaudate riguardano in particolare la gestione degli URL dell'applicazione, che è argomento di questo post di approfondimento su ModelVC.
Questo script pubblicato qualche giorno fa mostra come creare una route (a prescindere dal fatto che è utilizzato con ASP.NET MVC, potrebbe andare bene anche con WebForm) che sia più SEO-friendly, perchè aggiunge uno slash finale all'URL. In ModelVC lo trovate molto simile e vi invito quindi a leggerlo.
Tra l'altro, questa route non toglie via il problema che la pagina risponde ad entrambi le varianti, per cui se avete linkato la versione senza slash finale, occorre fare (come potete leggere nello script) un ulteriore passo per fare un redirect permanent. Se però l'applicazione è nuova ed usate le feature di ASP.NET 4.0 per generare le route, non avrete problemi, perchè l'altra versione non sarà mai linkata.
Questo è un aspetto molto importante da tenere in considerazione, perchè migliora l'indicizzazione sui motori: evitando un doppio contenuto, poi, il motore non vi penalizzerà.
Un altro aspetto importante, che trovate nell'area news di ModelVC, è quello relativo al cosidetto SLUG. Sono gli URL brevi (o comunque descrittivi) che trovate in tantissimi siti. In ModelVC l'URL è più o meno:
http://dominio/news/1/slug-parlante/
Questo è possibile perchè, prima di tutto, è mappata una route ad hoc:
routes.MapSEORoute( "NewsDetails", "News/{id}/{slug}", new { controller = "News", Action = "Details", id="", slug=""});
Il mapping è fatto nel global.asax, ma vale qualsiasi considerazione fatta per le route di ASP.NET. Se volte approfondire l'argomento URL routing, vi consiglio questo articolo. Non sono limitate ad ASP.NET MVC, ma fanno parte del runtime di ASP.NET.
Grazie all'uso della route custom, creata in precedenza, in realtà viene sempre aggiunto uno slash finale. A parte questo, come funziona la creazione dello slug?
Per semplificarne l'implementazione, ancora una volta abbiamo creato un extension method per la classe NewsDTO, che è quella che gestisce i DTO delle news (che, ve lo ricordo, vanno in cache anche out-of-process e quindi sono ottimizzati per questi scenari). Questo consente di richiamare una generica funzione che, data una stringa, rimuove alcuni caratteri e toglie gli spazi:
return news.Replace(" ", "-").Replace("!", string.Empty).Replace("?", string.Empty).Replace("#", "Sharp").Replace(";", string.Empty).Replace(",", string.Empty);
Si tratta di un'implementazione semplice, che non tiene conto di diversi fattori: se volete usarla in produzione (noi la miglioreremo nelle prossime build), togliete anche tutti i caratteri accentati e prevedete un corrispondente che vada bene in un URL. In questi casi, comunque, la soluzione migliore, per una questione di performance, è analizzare carattere per carattere la stringa, costruendo uno StringBuilder con il risultato al volo. Noi, dato che non era la parte essenziale di ModelVC, l'abbiamo solo abbozzata. Tanto per fare un altro esempio, ci metterei un controllo massimo sulla parole da visualizzare, limitandolo alle prima 5 o 6.
Ricapitolando: la SEO è importantissima per un'app web e ModelVC vi mostra alcune tecniche interessanti, che possono aiutarvi a migliorare le vostre applicazioni web.
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- ASP.NET 5 e ASP.NET MVC 6: le cose da sapere, il 27 febbraio 2015 alle 09:10
- .NET Framework 4.6, .NET Core 5, ASP.NET 4.6 e ASP.NET 5: un po' di chiarezza, il 13 novembre 2014 alle 10:55
- La lunga strada verso la prossima versione di ASP.NET, il 29 settembre 2014 alle 17:24
- Visual Studio 11 beta: le novità di ASP.NET 4.5, l'1 marzo 2012 alle 19:53
- Inside ModelVirtualCasting #10: tutti pazzi per il web mobile, il 5 luglio 2010 alle 18:47
- Inside ModelVirtualCasting #9: Cache con Windows Server AppFabric, il 2 luglio 2010 alle 12:05