• Moderatore

    Vi segnalo questa utilissima dll open source che utilizzo anche io per implementare l'url rewrite http://urlrewriter.net/


  • User

    Ah ho provato anche io ad installarla ieri, ma non sono riuscito a capire come implementare la regola per il rewriting della pagina dettaglio.aspx?id=1,2,ecc...
    Saresti cosi gentile da spiegarmi come si fa?

    grazie


  • Moderatore

    Auesto potrebbe essere un esempio di web.config:
    in pratica viene riconosciuto un url di questo ripo : www.sito.ext/prodotto/scarpe-da-tennis.aspx

    L'engine richiamerà la pagina dettaglio.aspx passandogli come paramentro: scarpe-da-tennis.aspx che poi potrai utilizzare per ritrovare il prodotto esatto

    
    <?xml version="1.0"?>
    <configuration>
        <configSections>
            <section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>
        </configSections>
        <system.web>
            <globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8"/>
            <httpModules>
                <add type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" name="UrlRewriter"/>
            </httpModules>
        </system.web>
        
    <rewriter>
            <rewrite url="~/prodotto\/(.+/)?(.+\.aspx)" to="~/dettaglio.aspx?page=$2"/>
            
            
        </rewriter>
    </configuration>
    
    
    

  • User Newbie

    Guarda Legolas, sono convinto che sia un buon prodotto. Ma le provo tutte ed ancora non funziona.

    Continua a visualizzarmi sempre il link delle pagine con i parametri del DB.
    Da cosa può dipendere?

    :mmm:

     
    <configSections>
      <section
       name="rewriter"
       type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" 
       requirePermission="false"
       />
     </configSections>
     
    ...
    <httpModules>
       <add
        type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"
        name="UrlRewriter" />
      </httpModules>
    ...
    <rewriter>
      <!--<if url="/subcat.aspx?catid=$1" rewrite="/subcat/(.+)$" />-->
      <rewrite url="~/(.+)\.htm" to="~/subcat.aspx?catid=$2" />
     </rewriter>
    
    

  • Moderatore

    Che vuol dire che ti visualizza il link della pagina con i parametri del db?

    La dll traduce gli url come questo :www.sito.com/scarpe/scarpe-da-tennsi.aspx in questo www.sito.com/prodotto.aspx?id=145

    Non viceversa.


  • User Newbie

    :(): ah!!

    E nel caso gli id siano dinamici, senza sapere quale ID corrisponde, nel mio caso la categoria? come traduco: /categoria/sottocategoria/nomeprodotto.html ?


  • User Newbie

    Scusa Legolas ho risolto, avevi ragione, ho modificato nel datalist i link con i parametri corretti, ID e NOME. Che tonta.

    Ma nel caso ci siano più parametri, e volessi visualizzare il NOME del prodotto, passando solo l'ID come posso fare?

    /subcat.aspx?catid=$1&nome=$2

    in

    /nomeprodotto.aspx

    Ti ringrazio per l'aiuto!!


  • User

    siccome mi interessa quest articolo vorrei sapere ma
    la classe HandleIt cosa bisogna modificare di preciso 😞

    using System;
    using System.Web;
    using System.Web.UI;
    using System.Globalization;

    namespace devHttpHandler
    {
    public class HandleIt : IHttpHandlerFactory
    {
    public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
    {
    // ritorno l'IHttpHanlder
    // I parametri da passare sono:
    // virtualPath (il path della richiesta),
    // inputFile (il percorso fisico del file da richiamare),
    ...................... eccc

    bisogna lasciarla cosi com'è tranne che modificare "/articolo.aspx" in quello che vogliamo ?
    nella riga
    return System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath("/Article.aspx",typeof(Page)); oppure va implementato altro in questa classe se si cosa

    bisogna quindi solo modificare page_preinit
    e il metodo findArticolo nella specifica pagina .aspx?
    Perchè l'autore dice di non aver scritto molto codice di controllo e non capisco quale parte di codice modificare per le propie esigenze specialmente per la clase HandleIt cosa va modificato di preciso solo la stringa "/articolo.aspx" e se si come faccio poi ad avere un url-rewrite su più pagine invece di 1 diverse da "\articolo", sto andando in pallone su questa cosa


  • User

    Ma per la libreria urlrewritingnet bisogna usare solo il file web.confing da quello che ho capito giusto, da li bisogna settarsi la lista dei regex?

    Perche se cosi preferisco questa strada rispetto al metodo in asp.net degli handler, perche penso che una libreria esterna sia molto meglio di codice scritto da me 🙂


  • User

    perfetto ci sono riuscito facilmente con la libreria UrlRewritingNet.UrlRewriter.dll grazie hai vostri consigli grazie


  • User

    ciao Ragazzi
    per caso qualcuno ha poi accusato una scarsa visibilità su google con i siti in cui è applicato l'url rewrite con ASPnet 3.5 e gli url sono gestiti con l'ASP.NET Routing?

    Noi abbiamo un caso di un sito spiderato da google ma non in maniera completa, inoltre sul webmaster tool compaiono errori di scansione stranissimi, di pagine che nella realtà non esistono.
    sulla maggior parte degli HTTP / HTTPS Header Check non sembrano ci siano problemi...

    qualcuno ha qlc risorsa dove studiare meglio questo lato seo che come avete capito non mi appartiene?


  • User

    Ciao a tutti, sto impazzendo su un lavoro che sembra facilissimo,
    soprattutto dopo aver visto la vasta gamma dei servizi che offre IIS, ma per il quale non so piu cosa provare.

    Ho un sito web su aruba windows 2008 e vorrei riscrivere gli url soprattutto per le pagine dinamiche.
    Una pagina dinamica tipo è fatta così:
    catalogo.asp?scat=120&cat=240

    dove scat riporta ID della SCategoria e cat riporta ID della Categoria

    Quello che vorrei fare è ottenere un risultato dove prendo dal
    database access il contenuto della SCategoria collegato a quel ID e
    metterlo nel link

    Quindi tipo questo:

    CONTENUTO-DELLA-CELLA-CON-ID-120

    ancora meglio se

    CONTENUTO-DELLA-CELLA-CON-ID-120/CONTENUTO-DELLA-CELLA-CON-ID-240


  • User

    Salve vorrei effettuare un redirect 301 di alcune pagine da htm a html, server aruba, ho provato più volte a creare e modificare il file web.config seguendo delle guide che suggerscono di creare una mappa url rewrite e poi il file web.config
    Step 1: Create the rewrite mapping file

    This is a text file, saved with the name rewritemaps.config, here?s the example format:
    <rewriteMaps>
    <rewriteMap name="Redirects">
    <add key="/oldurl" value="/newurl" />
    <add key="/oldurl2" value="/newurl2" />
    </rewriteMap>
    </rewriteMaps>

    Step 2: Copy to IIS

    Copy the rewritemaps.config file into the same directory as your web.config (on IIS)
    Step 3: Add a reference to web.config

    Add a reference to the rewritemaps.config file in your web.config file eg:
    <configuration>
    <system.webServer>
    <rewrite>
    <rewriteMaps configSource="rewritemaps.config"><rewriteMaps>
    <rules>
    <rule name="Redirect rule1 for Redirects">
    <match url=".*" />
    <conditions>
    <add input="{Redirects:{REQUEST_URI}}" pattern="(.+)" />
    </conditions>
    <action type="Redirect" url="{C:1}" appendQueryString="false" />
    </rule>
    </rules>
    </rewrite>
    </system.webServer>
    </configuration>
    Step 4: Load into IIS

    La risposta che ho inserendo index.htm verso index.html è errore 500 che sono andato a vedere qua
    sembra che sia un problema di permessi
    https: // support . microsoft . com / en-us /kb /942055
    ApplicationHost.config and Web.config files so that IIS_IUSRS has the Read permission for those files
    Avete suggerimenti?
    Grazie