INTERNET EXPLORER? Ti consiglio di navigare questo sito con Mozilla Firefox oppure con Google Chrome.

Riscrivere le URL con Asp

Siti dinamici con ASP
Impara a creare siti dinamici professionali con ASP

Concesso in esclusiva a MrWebmaster.it - E' vietata la pubblicazione senza espresso consenso del proprietario

Molteplici esigenze legate ai motori di ricerca, piuttosto che ad una più semplice consultazione del sito, suggeriscono l'impiego di URL statiche al posto delle URL dinamiche con i parametri passati via querystring, ma creare tutti i file a mano, nemmeno a dirlo, è un suicidio!

Vediamo di capire meglio. Immaginiamo il seguente indirizzo di un ipotetico sito che, come questo, eroga articoli. Potremmo avere la seguente URL:

http://www.nomedelsito.ext/articolo.asp?id=1243
Sarebbe molto più comodo ed efficace da un punto di vista di indicizzazione avere una URL del genere:
http://www.nomedelsito.ext/articolo_1243.asp
In virtù di quanto detto in precedenza su discorso "creazione manuale dei singoli file" c'è purtroppo da dire che ne Asp ne il server Web IIS dispongono nativamente di un sistema di scrittura delle URL in maniera statica, simulando appunto una URL statica, quindi il processo che viene chiamato in gergo URL Rewriting.

Esiste però il componente ISAPI Rewrite che, se installato su IIS, permette attraverso delle semplici espressioni regolari di riscrivere gli indirizzi delle pagine Web.

Sul sito ufficiale di quello che viene definito anche filtro ISAPI è possibile scaricare il componente (shareware) e trovare un'esaustiva documentazione sul suo impiego, la sua sintassi e quant'altro. L'indirizzo è il seguente:

http://www.isapirewrite.com/

C'è comunque da dire che moltissimi servizi di hosting che supportano ASP hanno installato questo componente, quindi lo si può sfruttare direttamente online senza acquistarlo, chiedendo però al proprio hoster informazioni su com'è configurato, che tipologia di espressioni regolari vanno utilizzate e come e dove va inserito il file che le contiene.

In genere, comunque, è sufficiente creare il file httpd.ini (in cui inserire il codice dell'ISAPI_Rewrite) e copiarlo nella root del proprio sito Web.

Passiamo alla pratica e mettiamo inpiedi l'esempio di URL di cui sopra, immaginando quale potrebbe essere, semplicisticamente parlando, il codice del file articolo.asp:
<%@LANGUAGE = JScript%>
<%
    var id = String(Request.QueryString("id"));
%>
<html><head>
<title>Riscrivere le URL con Asp</title>
</head><body>

<h1>Articolo # <%=id%></h1>

<p>
Testo dell'articolo da prendere
dinamicamente dal database...
</p>

</body></html>
Nulla da spiegare, è un normale file Asp che ottempera alle sue funzioni.

Passiamo alla redazione del codice da inserire nel file httpd.ini al fine di riscrivere la URL relativa al file articolo.asp come visto in precedenza:
[ISAPI_Rewrite]
RewriteRule /articolo_(.*).asp /articolo.asp?id=$1 [L]
Andiamo per gradi. L'intestazione [ISAPI_Rewrite] non è obbligatoria in tutti i casi. Chiedere al gestore del proprio servizio di hosting se usarla o meno.

Il comando RewriteRule stabilisce le regole di rewriting e funziona come segue:
RewriteRule nuova_url vecchia_url
o che dir si voglia:
RewriteRule url_statica url_dinamica
Chiarito il concetto... chiariamone altri!

Andiamo a costruire la forma della URL che vogliamo mostrare a video utilizzando, per lo mezzo, l'espressione regolare (.*) che vuol dire "accetta tutti i caratteri". Esistono altre forme che permettono di effettuare controlli che verifichino, ad esempio, che vengano passati solo numeri, solo lettere, solo lettere con solo determinati caratteri speciali, e cosi via.

Per maggiori informazioni consultare il sito della casa madre (indicato in precedenza) oppure ricordarsi che i controlli possono anche essere impostati direttamente nella pagina, verificando, nel nostro esempio, che la variabile "id" sia numerica.

Passiamo alla seconda porzione di codice, ovvero quella della URL che stiamo "abbandonando". Passiamo alla querystring la coppia di caratteri $1 che indica il primo parametro che viene passato in querystring (in questo caso l'unico).

L'impiego del simbolo del dollaro non finisce qui, dato che vine usato in alcuni casi per separare la "nuova" e la "vecchia" URL, come nell'esempio (di prima, corretto) che segue:
[ISAPI_Rewrite]
RewriteRule /articolo_(.*).asp$ /articolo.asp?id=$1 [L]
Usiamo il dollaro alla fine della "nuova" URL, senza spazi sulla sinistra ma con uno spazio sulla destra prima della "vecchia" URL.

Il comando [L] sta per "last" (ultimo) ed indica che, se c'è corrispondenza e logica nell'espressione, non è necessario effettuare ulteriori verifiche.

Vediamo adesso un esempio di scrittura di URL dinamica in statica con due parametri, come il seguente:
http://www.nomedelsito.ext/articolo.asp?cat=50&id=1243
In sostanza andiamo esplicitamente ad indicare (magari per motivi di programmazione) l'ID della categoria di appartenenza dell'articolo.

Riscriviamo la URL come segue:
http://www.nomedelsito.ext/articoli/50/1243.html
Vediamo il codice del file httpd.ini quale dovrà essere:
[ISAPI_Rewrite]
RewriteRule /articoli/(.*)/(.*).html /articolo.asp?cat=1$&id=$2 [L]
Si capisca quindi se, data la configurazione sul proprio server, è necessario o meno usare il dollaro come carattere di separazione.

E' anche possibile scrivere la URL in questo modo, che sarebbe ideale ai fini dell'indicizzazione nei motori di ricerca:
http://www.nomedelsito.ext/nome_categoria/titolo_articolo/
Lascio al lettore il compito.

IN EVIDENZA