Creazione di URL leggibili nei siti di Pagine Web ASP.NET (Razor)
Questo articolo descrive il routing in un sito Web di Pagine Web ASP.NET (Razor) e in che modo consente di usare gli URL più leggibili e migliori per SEO.
Contenuto dell'esercitazione:
- Come ASP.NET usa il routing per consentire l'uso di URL più leggibili e ricercabili.
Versioni software usate nell'esercitazione
- Pagine Web ASP.NET (Razor) 3
Questa esercitazione funziona anche con Pagine Web ASP.NET 2.
Informazioni sul routing
Gli URL per le pagine del sito possono avere un impatto sul funzionamento del sito. Un URL "descrittivo" può semplificare l'uso del sito da parte degli utenti. Può anche essere utile per l'ottimizzazione del motore di ricerca (SEO) per il sito. ASP.NET siti Web includono la possibilità di usare automaticamente URL descrittivi.
ASP.NET consente di creare URL significativi che descrivono le azioni utente invece di puntare a un file nel server. Prendere in considerazione questi URL per un blog fittizio:
http://www.contoso.com/Blog/blog.cshtml?categories=hardware
http://www.contoso.com//Blog/blog.cshtml?startdate=2009-11-01&enddate=2009-11-30
Confrontare gli URL con quelli seguenti:
http://www.contoso.com/Blog/categories/hardware/
http://www.contoso.com/Blog/2009/November
Nella prima coppia, un utente deve sapere che il blog viene visualizzato usando la pagina blog.cshtml e quindi deve costruire una stringa di query che ottiene la categoria o l'intervallo di date corretto. Il secondo set di esempi è molto più facile da comprendere e creare.
Gli URL per il primo esempio puntano direttamente a un file specifico (blog.cshtml). Se per qualche motivo il blog è stato spostato in un'altra cartella nel server o se il blog è stato riscritto per usare una pagina diversa, i collegamenti potrebbero essere errati. Il secondo set di URL non punta a una pagina specifica, quindi anche se l'implementazione o la posizione del blog cambia, gli URL sarebbero ancora validi.
In Pagine Web ASP.NET è possibile creare URL più descrittivi come quelli negli esempi precedenti perché ASP.NET usa il routing. Il routing crea il mapping logico da un URL a una pagina (o pagine) in grado di soddisfare la richiesta. Poiché il mapping è logico (non fisico, a un file specifico), il routing offre una grande flessibilità nella definizione degli URL per il sito.
Funzionamento del routing
Quando ASP.NET elabora una richiesta, legge l'URL per determinare come instradarlo. ASP.NET tenta di associare singoli segmenti dell'URL ai file su disco, passando da sinistra a destra. Se esiste una corrispondenza, qualsiasi elemento rimanente nell'URL viene passato alla pagina come informazioni sul percorso.
Si supponga che un utente effettui una richiesta usando questo URL:
http://www.contoso.com/a/b/c
La ricerca è simile alla seguente:
- Esiste un file con il percorso e il nome di /a/b/c.cshtml? In tal caso, eseguire la pagina e non passarvi alcuna informazione. In caso contrario...
- Esiste un file con il percorso e il nome di /a/b.cshtml? In tal caso, eseguire la pagina e passarvi il valore
c
. Altrimenti... - Esiste un file con il percorso e il nome di /a.cshtml? In tal caso, eseguire la pagina e passarvi il valore
b/c
.
Se la ricerca non ha trovato corrispondenze esatte per i file con estensione cshtml nelle cartelle specificate, ASP.NET continua a cercare questi file a sua volta:
- /a/b/c/default.cshtml (nessuna informazione sul percorso).
- /a/b/c/index.cshtml (nessuna informazione sul percorso).
Nota
Per essere chiari, le richieste per pagine specifiche, ovvero le richieste che includono l'estensione del nome file con estensione cshtml , funzionano esattamente come previsto. Una richiesta come http://www.contoso.com/a/b.cshtml
eseguirà la pagina b.cshtml .
All'interno di una pagina è possibile ottenere le informazioni sul percorso tramite la proprietà della UrlData
pagina, ovvero un dizionario. Si supponga di avere un file denominato ViewCustomers.cshtml e che il sito ottenga questa richiesta:
http://mysite.com/myWebSite/ViewCustomers/1000
Come descritto nelle regole precedenti, la richiesta passerà alla pagina. All'interno della pagina è possibile usare codice simile al seguente per ottenere e visualizzare le informazioni sul percorso (in questo caso, il valore "1000"):
<!DOCTYPE html>
<html>
<head>
<title>URLData</title>
</head>
<body>
Customer ID: @UrlData[0].ToString()
</body>
</html>
Nota
Poiché il routing non comporta nomi di file completi, può verificarsi ambiguità se sono presenti pagine con lo stesso nome ma estensioni di nome file diverse, ad esempio MyPage.cshtml e MyPage.html. Per evitare problemi con il routing, è consigliabile assicurarsi di non avere pagine nel sito i cui nomi differiscono solo per l'estensione.
Risorse aggiuntive
WebMatrix: URL, UrlData e Routing per SEO. Questo post di blog di Mike Brind fornisce alcuni dettagli aggiuntivi sul funzionamento del routing in Pagine Web ASP.NET.