Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    URL Rewite con Web.config

    Salve a tutti

    utilizzo un codice su web.config per riscrivere in formato url friendly una query string proveniente da un DB ....
    in pratica cliccando su questo link:
    www.miodominio.it/Prodotti/ElencoProdotti.asp?IDC=43&item=Campane-Tibetane
    mi si trasforma in
    www.miodominio.it/Prodotti/Campane-Tibetane-43

    il codice che utilizzo su web.config è questo:

    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    <system.webServer>
    <rewrite>
    <rules>
    
    <rule name="ElencoProdotti 1">
    <match url="ElencoProdotti.asp(.*)" ignoreCase="true" />
    <conditions logicalGrouping="MatchAll">
    <add input="{QUERY_STRING}" pattern="^(.*)IDC=([0-9]+)&amp;item=(.*)" ignoreCase="true" />
    </conditions>
    <action type="Redirect" url="{C:3}-{C:2}" appendQueryString="false" />
    </rule>
    <rule name="ElencoProdotti 2" stopProcessing="true">
    <match url="^(.*)-([0-9]+)" ignoreCase="true" />
    <action type="Rewrite" url="ElencoProdotti.asp?IDC={R:2}&amp;item={R:1}" appendQueryString="false" />
    </rule>
    
    </rules>
    </rewrite>
    </system.webServer>
    </configuration>


    e fin quì tutto funziona regolarmente ..... i problemi nascono quando aggiungo un'altra regola portando il web.config ad essere così:


    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    <system.webServer>
    <rewrite>
    <rules>
    
    <rule name="Prodotti 1">
    <match url="Prodotti.asp(.*)" ignoreCase="true" />
    <conditions logicalGrouping="MatchAll">
    <add input="{QUERY_STRING}" pattern="^(.*)IDM=([0-9]+)&amp;item=(.*)" ignoreCase="true" />
    </conditions>
    <action type="Redirect" url="{C:3}-{C:2}" appendQueryString="false" />
    </rule>
    <rule name="Prodotti 2" stopProcessing="true">
    <match url="^(.*)-([0-9]+)" ignoreCase="true" />
    <action type="Rewrite" url="Prodotti.asp?IDM={R:2}&amp;item={R:1}" appendQueryString="false" />
    </rule>
    
    <rule name="ElencoProdotti 1">
    <match url="ElencoProdotti.asp(.*)" ignoreCase="true" />
    <conditions logicalGrouping="MatchAll">
    <add input="{QUERY_STRING}" pattern="^(.*)IDC=([0-9]+)&amp;item=(.*)" ignoreCase="true" />
    </conditions>
    <action type="Redirect" url="{C:3}-{C:2}" appendQueryString="false" />
    </rule>
    <rule name="ElencoProdotti 2" stopProcessing="true">
    <match url="^(.*)-([0-9]+)" ignoreCase="true" />
    <action type="Rewrite" url="ElencoProdotti.asp?IDC={R:2}&amp;item={R:1}" appendQueryString="false" />
    </rule>
    
    </rules>
    </rewrite>
    </system.webServer>
    </configuration>


    a questo punto il link www.miodominio.it/Prodotti/ElencoProdotti.asp?IDC=43&item=Campane-Tibetane non mi funziona più ... non mi dà errore ma stranamente mi dice che con questa query non trova risultati .... penso di aver trovato il problema, in sostanza il link che passo con la variabile IDC=43 (che sarebbe ID Categoria) non capisco per quale motivo si attiva la prima regola e non la seconda:

    codice:
    <add input="{QUERY_STRING}" pattern="^(.*)IDM=([0-9]+)&amp;item=(.*)" ignoreCase="true" />
    <add input="{QUERY_STRING}" pattern="^(.*)IDC=([0-9]+)&amp;item=(.*)" ignoreCase="true" />

    sapreste darmi dei suggerimenti ?

    Grazie tantissimo
    Ultima modifica di djciko; 29-09-2020 a 10:50
    Pippo Giacalone
    giacalone@tin.it

  2. #2
    Nessuno riesce a darmi una mano ?
    Pippo Giacalone
    giacalone@tin.it

  3. #3
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    19,784
    thread ripulito da msg non necessari all'argomento

    @peppeweb
    non sono così pratico in materia ma proverò a fare alcuni test per tentare una risposta

  4. #4
    .... ti ringrazio tantissimo
    Pippo Giacalone
    giacalone@tin.it

  5. #5
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,798
    La butto li' per fare delle prove.

    Siccome "prodotti" è una sottostringa di "elencoprodotti", puoi provare a cambiare il nome della pagina da "prodotti.asp" a qualcosa di completamente diverso ?

    Ricordo (l'ultimo handler l'ho fatto tempo fa) che il pattern che detta le regole ha una logica tutta sua.

    La pagina dei prodotti prova a chiamarla "products.asp" e cambia il nome delle regole che la riguardano.

    Una cosa tipo:

    codice:
    <rule name="Products 1">
    <match url="Products.asp(.*)" ignoreCase="true" />
    <conditions logicalGrouping="MatchAll">
    <add input="{QUERY_STRING}" pattern="^(.*)IDM=([0-9]+)&amp;item=(.*)" ignoreCase="true" />
    </conditions>
    <action type="Redirect" url="{C:3}-{C:2}" appendQueryString="false" />
    </rule>
    <rule name="Prodotti 2" stopProcessing="true">
    <match url="^(.*)-([0-9]+)" ignoreCase="true" />
    <action type="Rewrite" url="Prodotti.asp?IDM={R:2}&amp;item={R:1}" appendQueryString="false" />
    </rule>

  6. #6
    Scusa djciko

    ma quelli in rosso li hai lasciati volontariamente così oppure è una svista ?


    <rule name="Products 1">
    <match url="Products.asp(.*)" ignoreCase="true" />
    <conditions logicalGrouping="MatchAll">
    <add input="{QUERY_STRING}" pattern="^(.*)IDM=([0-9]+)&amp;item=(.*)" ignoreCase="true" />
    </conditions>
    <action type="Redirect" url="{C:3}-{C:2}" appendQueryString="false" />
    </rule>
    <rule name="Prodotti 2" stopProcessing="true">
    <match url="^(.*)-([0-9]+)" ignoreCase="true" />
    <action type="Rewrite" url="Prodotti.asp?IDM={R:2}&amp;item={R:1}" appendQueryString="false" />
    </rule><rule name="Prodotti 2" stopProcessing="true"><match url="^(.*)-([0-9]+)" ignoreCase="true" /><action type="Rewrite" url="Prodotti.asp?IDM={R:2}&amp;item={R:1}" appendQueryString="false" /></rule>
    Pippo Giacalone
    giacalone@tin.it

  7. #7
    io comunque avevo già provato una soluzione simile ma senza risultati:

    <rule name="Prodotti 1">
    <match url="Prodotti.asp" ignoreCase="true" />
    <conditions logicalGrouping="MatchAll">
    <add input="{QUERY_STRING}" pattern="^(.*)IDM=([0-9]+)&amp;item=(.*)" ignoreCase="true" />
    </conditions>
    <action type="Redirect" url="{C:3}-{C:2}" appendQueryString="false" />
    </rule>
    <rule name="Prodotti 2" stopProcessing="true">
    <match url="(.*)-([0-9]+)" ignoreCase="true" />
    <action type="Rewrite" url="Prodotti.asp?IDM={R:2}&amp;item={R:1}" appendQueryString="false" />
    </rule>


    <rule name="Elenco 1">
    <match url="Elenco.asp(.*)" ignoreCase="true" />
    <conditions logicalGrouping="MatchAll">
    <add input="{QUERY_STRING}" pattern="^(.*)IDC=([0-9]+)&amp;item=(.*)" ignoreCase="true" />
    </conditions>
    <action type="Redirect" url="{C:3}-{C:2}" appendQueryString="false" />
    </rule>
    <rule name="Elenco 2" stopProcessing="true">
    <match url="^(.*)-([0-9]+)" ignoreCase="true" />
    <action type="Rewrite" url="Elenco.asp?IDC={R:2}&amp;item={R:1}" appendQueryString="false" />
    </rule>
    Pippo Giacalone
    giacalone@tin.it

  8. #8
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,798
    ti ho solo messo il nome della pagina, il web config non l'ho cambiato

    comunque, puoi provare da una pagina aspx invece che dalla tecnologia asp ?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.