• Super User

    @pettedemon said:

    Ciao,
    per problemi "tecnici" , mi sono un pò perso.
    Ora considerando che tutte le mie pagine le voglio far caricare da database e che il mio sito è multilingua, come posso far gestire le lingue?

    La mia pagina sarà index.php?lang=it

    e questa sarà quella di default ma devo dire che quando non trova parametri vada direttamente su www.sito.it ma devo anche indicare al get il parametro...

    Perchè passare un ulteriore parametro? La lingua puoi procurartela dal dominio di primo livello
    @pettedemon said:

    Poi per la lingua inglese ad esempio index.php?lang=en come lo posso gestire per farlo andare in www.sito.it/en ??
    grazie!!!

    Se intendi redirect 301, cosi:

    
    RewriteRule ^index.php?lang=(.*)$ www.sito.it/$1 [R=301]
    
    

  • User Attivo

    Perchè praticamente devo selezionare il database in base alla lingua, ma essendo di default italiano volevo evitare che nella barra degli indirizzi si vedesse /it/ .

    il massimo del percorso sarà www.miosito.it/en/camere/prezzi.html#camere

    quindi devo prevedere di gestire più parametri, mentre come ti spiegavo prima per l'italiano volevo evitare si vedesse il /it/
    si può fare?
    Graziee!


  • User Attivo

    l'indirizzo di partenza dovrebbe essere www.sito.it, mentre per le altre lingue sarà www.sito.it/en/

    Mi son creato queste regole
    [PHP]codice: RewriteEngine On
    RewriteBase /

    RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+).html$ index.php?&lang=$1&pagina=$2 [QSA,L]
    RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+).html$ pagina.php?&lang=$1&cartella=$2&pagina=$3 [QSA,L] [/PHP]

    questo mi gestisce le pagine www.sito.it/it/pagina.html e anche
    www.sito.it/it/pagina/pagina.html

    vorrei però eliminare /it/ nel dominio italiano però mi serve come parametro per accedere al database dei contenuti in italiano.

    Poi mi troverei anche col dover inserire una regola perchè la pagina /index.html venisse letta anche se digito solamente /

    Qualche suggerimento??


  • Super User

    Non so se ho capito bene
    prova cosi:

    
    RewriteEngine On
    RewriteBase /
    
    RewriteRule ^en/([a-zA-Z0-9-]+).html$ /index2.php?lang=en [L, NC]
    RewriteRule ^fr/([a-zA-Z0-9-]+).html$ /index2.php?lang=fr [L, NC]
    RewriteRule ^([a-zA-Z0-9-]+).html$ /index2.php?lang=it [L, NC]
    
    

    In pratica la prima e la seconda riga intercettano gli url del tipo /en/aaa.html e /fr/aaa.html.
    In questo modo la terza regola ossia l'italiano viene eseguita se non sono eseguite le altre due


  • User Attivo

    Perfetto!
    Infatti se non c'è nulla mi prende in get il parametro it....
    adesso se io volessi gestire altri parametri come nell'esempio che ti ho riportato?


  • User Attivo

    Forse sto facendo un po di confusione però così sta funzionando
    [HTML]RewriteRule ^en/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+).html$ /pagina.php?lang=en&cartella=$1&pagina=$2 [L,NC]
    RewriteRule ^fr/([a-zA-Z0-9-]+).html$ /index.php?lang=fr [L,NC]
    #RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+).html$ /index.php?lang=it&pagina=$1 [L,NC]
    RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+).html$ /pagina.php?lang=it&cartella=$1&pagina=$2 [L,NC][/HTML]

    il problema si presenta quando io devo utilizzare una pagina nella root
    quindi per la pagina www.sito.it/cartella/pagina.html funziona
    ma se io devo usare www.sito.it/paginina.html come posso fare per fargli riconoscere?


  • Super User
    
    RewriteRule ^/([a-zA-Z0-9-]+).html$ /pagina.php?lang=it&cartella=$1&pagina=$2 [L,NC]
    
    

  • User Attivo

    Ciao, confermo che funziona tutto, magari può servire a qualcun altro
    [PHP]
    RewriteRule ^en/([a-zA-Z0-9-]+).html$ /index.php?lang=en [L,NC]
    RewriteRule ^([a-zA-Z0-9-]+).html$ /index.php?lang=it [L,NC]
    [/PHP]

    funziona:
    digitando ww.sito.it/pagina.html recupero la variabile "it"
    digitando ww.sito.it/en/pagina.html recupero la variabile "en"

    inserendo questo codice
    [PHP]
    RewriteRule ^en/([a-zA-Z0-9-]+).html$ /index.php?lang=en&pagina=$1 [L,NC]
    RewriteRule ^en/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+).html$ /pagina.php?lang=en&cartella=$1&pagina=$2 [L,NC]
    RewriteRule ^([a-zA-Z0-9-]+).html$ /index.php?lang=it&pagina=$1 [L,NC]
    RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+).html$ /pagina.php?lang=it&cartella=$1&pagina=$2 [L,NC]
    [/PHP]

    funziona:
    digitando ww.sito.it/pagina.html recupero la variabile "it" e "pagina"
    digitando www.sito.it/en/pagina.html recupero la variabile "en" e "pagina"

    digitando ww.sito.it/cartella/pagina.html recupero le variabili "it" - "cartella" - "pagina"
    digitando ww.sito.it/en/cartella/pagina.html recupero le variabili "en" - "cartella" - "pagina"


  • User Attivo

    Ora mi macherebbe solo una cosa...
    se io digito ww.sito/index.html i recupera la variabile "it" - "index"

    Se invece io volessi eliminare la pagina index e fare in modo che digitando www.sito.it legga automaticamente index.html come di default e mi continui a recuperare le 2 variabili come posso fare?

    Lo stesso mi servirebbe per se digito ww.sito.it/en/

    Grazieeeeeee


  • Super User

    @pettedemon said:

    Ora mi macherebbe solo una cosa...
    se io digito ww.sito/index.html i recupera la variabile "it" - "index"

    Se invece io volessi eliminare la pagina index e fare in modo che digitando www.sito.it legga automaticamente index.html come di default e mi continui a recuperare le 2 variabili come posso fare?

    Lo stesso mi servirebbe per se digito ww.sito.it/en/

    Grazieeeeeee

    Prova cosi:

    
    RewriteRule ^en/([^index]+).html$ /index.php?lang=en&pagina=$1 [L,NC]
    RewriteRule ^en/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+).html$ /pagina.php?lang=en&cartella=$1&pagina=$2 [L,NC]
    RewriteRule ^([^index]+).html$ /index.php?lang=it&pagina=$1 [L,NC]
    RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+).html$ /pagina.php?lang=it&cartella=$1&pagina=$2 [L,NC]