Salve a tutti,
desidererei sciogliere un dubbio che mi è sorto riguardo a una procedura che ho realizzato e adottato.
La procedura mi consente di servirmi della pagina 404 404.asp per ottenere un cosiddetto URL rewriter, basandosi su un file catalogo.asp che provvede alla navigazione del catalogo servendosi di (fino a) tre parametri in querystring:
catalogo.asp[?c=(ID della categoria)[[&s=(ID della sottocategoria)]&id=(ID del prodotto)]]
Dunque, per esempio:
catalogo.asp (mostra l'elenco delle categorie)
catalogo.asp?c=2 (mostra l'elenco delle sottocategorie in categoria 2)
catalogo.asp?c=2&s=3 (mostra l'elenco degli articoli in sottocategoria 3 di categoria 2)
catalogo.asp?c=2&s=3&id=5 (mostra l'articolo 5 in sottocategoria 3 di categoria 2)
Su questa premessa sarà possibile segmentare (con uno slash "/") categoria, sottocategoria e articolo in un URL del tipo "http://www.miodominio.it/fotografia.html" o "http://www.miodominio.it/fotografia/fotocamere-digitali.html" o "http://www.miodominio.it/fotografia/fotocamere-digitali/eos-505.html" e trasformare i path in parametri.
Poniamo il caso di "http://www.miodominio.it/fotografia/fotocamere-digitali/eos-505.html": non esistendo fisicamente né il percorso né tanto meno il file, verrà chiamato in causa il file 404.asp che contiene la seguente procedura:
codice:
Function URL_rewriter(cUrl, cQueryString)
Dim URhttp
Set URhttp = Server.CreateObject("WinHttp.WinHttpRequest.5.1")
URhttp.open "GET", cUrl & cQueryString, false
URhttp.Send()
UR = URhttp.ResponseText
Set URhttp = Nothing
End Function
cNomePagina = lcase(Request.ServerVariables("QUERY_STRING"))
cNomePagina = replace(cNomePagina,"404;http://www.miodominio.it:80/", "")
cNomePagina = replace(cNomePagina,".html", "")
cNomePagina = replace(cNomePagina,"-", " ")
aParametri = split(cNomePagina,"/")
nParametri = ubound(aParametri)
'----------
'A questo punto è opportuno qualcosa del tipo "select case"
'per stabilire e la profondità della chiamata e trattarla.
'
'Quella seguente è la chiamata con tutti e tre i parametri:
'----------
cCategoria = aParametri(0)
cSottocategoria = aParametri(1)
cArticolo = aParametri(2)
cQuery = "SELECT cat_ID, sub_ID, art_ID FROM categorie"
cQuery = cQuery & " INNER JOIN sottocategorie ON categorie.cat_ID=sottocategorie.sub_cat_ID"
cQuery = cQuery & " INNER JOIN articoli ON sottocategorie.sub_ID=articoli.art_sub_ID"
cQuery = cQuery & " WHERE cat_nom=""" & cCategoria & """ AND sub_nom=""" & cSottocategoria & """ AND art_nom=""" & cArticolo & """ LIMIT 1"
set rs = oledbconn.execute(cQuery)
if not rs.eof then
cUrl = "http://www.miodominio.it/catalogo.asp"
cQueryString = "?c=" & rs("cat_ID") & "&s=" & rs("sub_ID") & "&id=" & rs("art_ID")
response.write URL_rewriter(cUrl, cQueryString)
elseif rs.eof then
response.write "articolo non presente"
end if
La procedura, così com'è, funziona.
Ma questo non mi persuade sulla sua efficacia perché sospetto che i motori di ricerca indicizzino la pagina 404.asp piuttosto che la pagina virtuale.
Per questo mi rivolgo e chiedo a chi me ne sappia dare la risposta, ringraziandovi tutti per l'attenzione.