Puoi operare esattamente allo stesso modo no?

PS - io non ho davvero capito cosa stai facendo... da un url con gli id fai un redirect alla pagina stessa con le descrizioni adatte per il seo?

Ormai programmano tutti... ma la professionalità appartiene a pochi
82 messaggi dal 04 ottobre 2007
esatto, con il codice sotto mi intercetta tutte le richieste alla pagina "catalogo-......" e me le dirotta verso un'unica pagina la quale legge la query string, ormai fatta di nomi, e si cerca l'ID di quel nome nel database.

Ora però come dicevo dovrei leggere la seconda parte della query cioè il prodotto, come posso fare?

www.nomesito.com/italia/catalogo-artigiano-PRODOTTO
Grazie in anticipo


<%@ Application Language="C#" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Text.RegularExpressions" %>

<script runat="server">
        void Application_BeginRequest(object sender, EventArgs e){
      //creo l'espressione regolare che mi cattura gli URL che iniziano con promozione-
            var regex = new Regex("^/catalogo-(.*)", RegexOptions.IgnoreCase);
            //controllo l'url
            var match = regex.Match(Request.Url.AbsolutePath);
 
            //se ha trovato delle corrispondenze, riscrivo l'url
            if (match.Success)
                HttpContext.Current.RewritePath("catalogo.asp?nome=" + match.Groups[1].Value);

        }
</script>
Preciso che ci sono dei componenti che fanno quello che stai ricreando da zero.
Devi rifare tutto allo stesso modo. Penso che il tuo blocco sia qui:

 var regex = new Regex("^/catalogo-(.*)", RegexOptions.IgnoreCase)


su qeusto ti devi studiare le regex e creare un altro gruppo come (.*) ma noterai che

catalogo-(.*)-(.*)


non va bene e dovrai correggere il primo gruppo.
Una volta fatto potrai tranquillamente usare:


String url = String.Format("catalogo.asp?nome={0}&prodotto={1}", match.Groups[1].Value, match.Groups[2].Value);
HttpContext.Current.RewritePath(url);

Ormai programmano tutti... ma la professionalità appartiene a pochi
82 messaggi dal 04 ottobre 2007
thanks

quindi considerando che il primo nome contiene sempre e solo caratteri ma può avere anche un doppio nome separato da uno spazio vuoto andrebbe fatta così?

var regex = new Regex("^/catalogo-([a-z][ ])+-(.*)", RegexOptions.IgnoreCase)

Modificato da Partisan75 il 22 settembre 2015 14.56 -
ciò che è tra parentesi tonde poi ti dà il gruppo...

Ormai programmano tutti... ma la professionalità appartiene a pochi
82 messaggi dal 04 ottobre 2007
scusate modifico il post cambiando tutto perche ho fatto altre prove, c'era anche un errore nel percorso che andava corretto.

sto andando per esclusione costruendo un po alla volta usando la logica.

Ditemi voi se sbaglio:

Questo che funziona correttamente ma ha un solo gruppo

HttpContext.Current.RewritePath("/italiano/catalogo.asp?artigiano=" + match.Groups[1].Value);


dovrebbe avere lo stesso risultato di questo?

String url = String.Format("/italiano/catalogo.asp?artigiano=" + match.Groups[1].Value);
HttpContext.Current.RewritePath(url);


il primo funziona il secondo no...
come mai?
Modificato da Partisan75 il 22 settembre 2015 22.59 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
scegli la soluzione che forse per te è più semplice, cioè usare un solo gruppo, come nell'esempio originale.

Dalla pagina asp, ti basta fare uno split sul nome per dividere l'artigiano dal prodotto. C'è un'apposita funzione Split.
Dim parti, artigiano, prodotto
parti = Split(Request.QueryString("nome"), "-")
artigiano = parti(0)
'Controllo la lunghezza dell'array. Se il prodotto può essere omesso, questo mi eviterà un errore
If UBound(parti) > 0 Then
  prodotto = parti(1)
End If
'Uso le variabili artigiano e prodotto
Response.Write "Artigiano: " & artigiano
Response.Write "Prodotto: " & prodotto


Partisan75 ha scritto:

Forse dipende dal file webconfig o dalle mancate autorizzazioni per asp.net su IIS7?

No, ti ripeto: quando hai un errore in un punto del codice, quasi sempre il problema va risolto lì, specialmente se poco prima hai avuto prova del corretto funzionamento dell'applicazione.
Devi avere fiducia in ciò che conosci e in ciò che sai essere corretto, altrimenti vai a rimettere in discussione tutto quanto e non finisci più.

ciao,
Moreno

Enjoy learning and just keep making
82 messaggi dal 04 ottobre 2007
fantastico! da una prima prova funziona anche con la seconda categoria formata da piu parole e quindi con spazi vuoti.
Devo solo adattarlo ora alla mia esigenza e vado avanti.
Spero di non averne piu bisogno ma nel caso vi vengo a disturbare ancora ;-) anzi di sicuro!


Grazie

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.