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:
La procedura, così com'è, funziona.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
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.

					
					
					
						
  Rispondi quotando
						
						
 ma se hai un server dedicato (se non ricordo male) si può impostare il rewriter da impostazioni 
						