Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. La Community Connect.gt
    4. News Ufficiali da Connect.gt
    5. [MOD_RW] come ottenere un indirizzo valido sia con lo slash che senza
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • Z
      zumbo User Attivo • ultima modifica di

      [MOD_RW] come ottenere un indirizzo valido sia con lo slash che senza

      :fumato: Buonasera a tutti. Mi sono imbattuto oggi in un problema che sembra una banalità, ma per il quale alla fine non ho trovato soluzione e sono certo che anche voi ci sarete imbattuti.

      Dunque, la questione è semplicissima.

      Se io creo un indirizzo virtuale del tipo:

      miodominio.it/ciao/pasta-con-il-pomodoro/

      è ovvio che se un utente lo digita a mano senza lo slash finale

      miodominio.it/ciao/pasta-con-il-pomodoro

      debba finire lo stesso su quella pagina o quanto meno debba essere indirizzato tipo con un 302 sull'indirizzo con lo slash.

      Per quanto riguarda la gestione del "doposlash" ho deciso di passare tutto in un'unica variabile che si chiama "address".

      di modo che ad esempio l'indirizzo di cui sopra diventa

      index.php?address=ciao/pasta-con-il-pomodoro/

      per fare questo ho usato questa semplice regola

      RewriteRule ^(.*)/$ index.php?address=$1
      ```e funziona perfettamente.
      
      Ovviamente questa implicherebbe l'obbligo dello slash finale.
      
      
      Ragione direbbe che la cosa è risolvibilissima aggiungendo un semplice asterisco dopo lo slash in modo da rendere l'ultimo slash "facoltativo" ai fini del match, una cosa del tipo:
      
      

      RewriteRule ^(.)/$ index.php?address=$1

      
      ....c'è solo un problema però:
      
      al posto di passarmi come variabile address tutti quello che c'è dopo lo slash, il valore della variabile address è "index.php" !!!!!!
      
      ovvero la variabile address non cambia mai rendendo quindi inutile la riscrittura...
      
      
      Qualcuno di voi saprebbe per caso dirmi come mai?
      
      
      Nel caso non immaginiamo una soluzione a questo, mi chiedo, **c'è un modo per redirezionare indistintamente tramite htaccess tutti gli indirizzi che non hanno lo slash finale verso indirizzi che ce l'abbiano?
      ** 
      Vi prego, veniamo di venirne a capo...è proprio una questione di orgoglio, come mai a volte noi sviluppatori siamo messi dinanzi a problemi all'apparenza così banali, ma a volte cosi apparentemente irrisolvibili?
      
      Grazie, per aver letto fin qui :fumato:
      
      
      
      vi aspetto numerosiiii :ciauz:
      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • L
        liberoguerra User • ultima modifica di

        Ciao zumbo,
        io farei così (è la prima cosa che mi viene in mente)

        RewriteRule ^(.)$ http://miodominio.it/$1 [R=301,L]
        RewriteRule ^(.
        )/$ index.php?address=$1
        Provala perchè io non ho avuto tempo di testarla, comunque il concetto è questo:

        Trasformi prima il path senza slash finale, aggiungendone uno. Poi traduco il path con lo slash finale in index.php?adress=ecc...

        Spero di aver risposto alla tua domanda :bigsmile: ! Altrimenti ci chiariamo meglio.

        Ciauzz

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • Z
          zumbo User Attivo • ultima modifica di

          @liberoguerra said:

          Ciao zumbo,
          io farei così (è la prima cosa che mi viene in mente)

          Provala perchè io non ho avuto tempo di testarla, comunque il concetto è questo:

          Trasformi prima il path senza slash finale, aggiungendone uno. Poi traduco il path con lo slash finale in index.php?adress=ecc...

          Spero di aver risposto alla tua domanda :bigsmile: ! Altrimenti ci chiariamo meglio.

          Ciauzz

          Trovo la tua una soluzione molto acuta, anche se purtroppo non funziona.

          In effetti però bisognerebbe almeno stabilire se l'indirizzo ha lo slash oppure no, prima di aggiungerlo.

          In ogni caso non funziona, il redirect va in loop ed il browser da errore. :mmm:

          Ho provato ad integrare alcune modifiche alla tua idea...ma ancora niente.
          Chissà.

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • Z
            zumbo User Attivo • ultima modifica di

            Ho trovato un interessante articolo ad hoc (mydigitallife.info/2007/03/19/add-trailing-slash-to-the-end-of-the-url-with-htaccess-rewrite-rules/)

            La soluzione è simile alla tua ma un po più complessa:

            
            
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_URI} !\..+$
            RewriteCond %{REQUEST_URI} !/$
            RewriteRule (.*) wwwsitocom/$1/ [R=301,L]
            
            
            ```funziona ;)
            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • L
              liberoguerra User • ultima modifica di

              Allora ho modificato un pò le regole.

              Prova con queste...dovrebbero funzionare 😉

              RewriteRule ^(((.+)/)([^/]+))$ http://miodominio.it/$1/ [R=301,L]
              RewriteRule ^(.
              )/$ http://miodominio.it/index.php?address=$1/ [R,L]

              Fammi sapere

              A presto

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • L
                liberoguerra User • ultima modifica di

                Oooppss,
                hai trovato la soluzione 2 minuti prima che riuscissi a scrivere le mie regole. 😢

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • Z
                  zumbo User Attivo • ultima modifica di

                  @liberoguerra said:

                  Oooppss,
                  hai trovato la soluzione 2 minuti prima che riuscissi a scrivere le mie regole. 😢

                  wow...chissà se le tue funzionano ora...per caso le hai provate?

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • L
                    liberoguerra User • ultima modifica di

                    Si le ho provate...e sul mio server funzionano! Provale un pò.... un attimo solo però..

                    Ho riprovato le regole adesso con altri parametri e mi crea alcuni problemi.
                    Vediamo se riesco a mettere tutto a posto.

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • L
                      liberoguerra User • ultima modifica di

                      Finalmente ci sono riuscito ad eliminare il loop che il tuo problema logicamente creava.

                      Le regole sono le seguenti

                      RewriteEngine On
                      RewriteRule ^(.+).(.+)$ - [S=2,S=3,L]
                      RewriteRule ^((([^/]+)/)+)$ http://miosito.it/index3.php?address=$1
                      RewriteRule ^([^/]+/)*([^/]+)$ http://miosito.it/$1$2/ [R=301,L]
                      **

                      Esempi fatti per capire il funzionamento di tali regole.**

                      Richieste http: (la freccia "->" indica i passaggi di trasformazione che avvengono con le regole sopra citate)

                      http://miosito.it -> http://miosito.it> http://miosito.it/ciao.php -> http://miosito.it/ciao.php> http://miosito.it/../../ciao.php -> http://miosito.it/../../ciao.php (profondità directory arbitraria)> http://miosito.it/ciao -> http://miosito.it/ciao/ ->> http://miosito.it/index.php?address=ciao/> http://miosito.it/../../ciao -> http://miosito.it/../../ciao/ -> http://miosito.it/index.php?address=../../ciao/ (profondità directory arbitraria)Ora sono sicuro che funziona :wink3:

                      Spero di averti aiutato comunque.

                      Ciao ciao

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      Caricamento altri post
                      Rispondi
                      • Topic risposta
                      Effettua l'accesso per rispondere
                      • Da Vecchi a Nuovi
                      • Da Nuovi a Vecchi
                      • Più Voti