Visualizzazione risultati 1 fino 3 di 3

Discussione: aiuto rewriterule!

  1. #1
    Guest

    Predefinito aiuto rewriterule!

    Ciao a tutti, volevo chiedervi un aiuto:
    sto facendo un sito multilingua e vorrei usare le rewriterule per mascherare i parametri.

    Le url sono del tipo
    Codice:
    www.sito.com/index.php?lang=it&page=home
    e dovrebbe diventare così:
    Codice:
    www.sito.com/it/home
    per ora sto usando questa regola:
    Codice:
    RewriteRule ^(([a-z]{2})/)?([a-zA-Z0-9_-]+)$ index.php?lang=$2&page=$3 [L]
    funziona abbastanza, però se metto nella url questo:
    Codice:
    www.sito.com/it
    mi prende "it" come parametro page e lang vuoto.

    vorrei che scrivendo solo "www.sito.com" andasse alla versione default(inglese)
    e scrivendo "www.sito.com/it" andasse alla versione italiana, quindi passasse lang=it e page vuoto

    cioè in pratica se metto solo "/it" senza specificare altro dovrebbe andare alla home italiana, altrimenti va alla pagina specificata.
    Come posso fare?

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    È sbagliata la regola.
    In poche parole con (([a-z]{2})/)? dici che all'inizio della stringa possono esserci e non esserci (? quantificatore che indica 0 o 1 volta) 2 caratteri alfabetici; quindi ha 'priorità' la pagina.

    Non è nulla di sicuro, ma dovresti provare ad aggiungere ? anche al secondo subpattern.
    Prova così:
    Codice:
    RewriteRule ^(([a-z]{2})/?)?([a-zA-Z0-9_-]+)?$ index.php?lang=$2&page=$3 [L]
    Facci sapere.

  3. #3
    Guest

    Predefinito

    alla fine ho risolto così:
    Codice:
    <IfModule mod_rewrite.c>
    RewriteEngine on
    
    RewriteRule it/([a-z_-]+)? index.php?lang=it&page=$1 [L]
    RewriteRule ^it$ /it/home [R]
    
    # Default Page 
    RewriteRule ^([a-z_-]+)$ index.php?page=$1 [L]
    
    </IfModule>
    ora però ho un altro problema: se creo una cartella, ad esempio "test" e poi nel browser digito www.sito.com/test, mi appare la listing della directory anzichè la pagina test... come fare per fargli eseguire il rewrite anche se la cartella esiste fisicamente??

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •