• User Attivo

    @Juanin said:

    Ciao.

    Sì lo puoi spegnere utilizzando un'operatore logico che dica !valore.

    Ciao e grazie innanzitutto per la risposta!
    Mi fai un esempio per favore ? giusto per darmi una dritta sulla quale poi fare delle prove e lavorarci su ?

    Grazie


  • Admin

    Nelle RewriteCond basta che metti !regolachevuoi.


  • User Attivo

    ok ho provato varie regole, come mi hai suggerito tu, alla fine solo questa regola funziona in parte*:

    RewriteCond %{REQUEST_URI} "/en/"
    RewriteRule (.*) $1

    Con questa regola però se digito

    w w w . nomedominio . com / en /

    *adesso funziona e si carica la versione inglese del sito (con questo URL) ma tutti gli URL che stanno sotto questa cartella NON VENGONO (ovviamente) PIU' RISCRITTI DAL REWRITERULE, esempio:

    http: // w w w . nomesito .com/en/products/gifts/
    (URL TIPICO DI UNA CATEGORIA DEL SITO INGLESE)

    oppure

    http: // w w w . nomesito .com/en/products/gifts/thermos/
    (URL TIPICO DI UNA SOTTO CATEGORIA DEL SITO INGLESE)

    Quindi in sostanza sono riuscito a evitare che venga eseguito il rewriterule della cartella specifica /en/ (e quindi OK) ma ORA DEVO far in modo che il reriterule VENGA ESEGUITO su qualsiasi cartella al suo interno, altrimenti la parte inglese non funziona ...

    Come posso fare ?


  • Admin

    Devi fare il match esatto solo su !/en/ in modo che non contempli le sottocartelle.

    Gusto per fare un esempio potresti dire tutte quelle che iniziano e finiscono con /en/.

    Se invece ti serve Match esatto di URL puoi fare senza regexp %{REQUEST_URI} =/en/


  • User Attivo

    @Juanin said:

    Devi fare il match esatto solo su !/en/ in modo che non contempli le sottocartelle.

    innanzitutto grazie per la risposta ... ma come si fa il match esatto su qualsiasi cartella tranne che su /en/, in modo che contempoli le sottocartelle ?
    E' proprio questo che non riesco a fare (per limiti miei ovviamente)...


  • Admin

    Io non ho capito bene cosa vuoi fare.

    Riesci a farmi una lista delle cose che dovrebbero succedere in modo sintetico.


  • User Attivo

    ok ... vorrei fare semplicemente questo:

    che quando digito questo URL NON VENGA eseguito il rewriterule:

    w w w . nomedominio . com / en /

    (con questo URL carico la home page in inglese)

    che quando digito un URL di questi tipi VENGA eseguito il rewriterule:

    w w w . nomedominio . com / en /products/gifts/

    w w w . nomedominio . com / en /products/gifts/thermos/

    (con questi URL carico una categoria o una sotto-categoria ma tramite l'uso del rewriterule ... per questo ho bisogno che per qualsiasi cartella che sta sotto /en/ mi funzioni il rewriterule ... o basterebbe dirgli che per la cartella /en/products/ funzioni il rewriterule, tanto qualsiasi contenuto sta sotto questa cartella in inglese)


  • Admin

    Allora lascia tutte le condizioni e usa una condizione di esclusione in aggiunta con match esatto su /en/
    %{REQUEST_URI}!=/en/


  • User Attivo

    mi devi scusare, porta pazienza (non ti arrabbiare, non sono molto pratico su questo tema ... :)), ma non capisco cosa intendi quando scrivi "lascia tutte le condizioni", intendi una cosa di questo tipo:

    RewriteCond %{REQUEST_URI} "/en/"
    RewriteRule (.*) $1
    RewriteCond %{REQUEST_URI}!=/en/

    Non ho capito come devo inserire la tua direttiva (e se nella stringa che hai scritto tu manca qualcosa o va messa pari pari a come l'hai scritta) ...


  • Admin

    Puoi fare in vari modi.

    Puoi combinare tutto in una sola regola o accodarne 2 o più prima della rewrite rule. Esempio:

    RewriteCond A
    RewriteCond B
    RewriteRule 1
    

  • User Attivo

    @Juanin said:

    Puoi fare in vari modi.

    Puoi combinare tutto in una sola regola o accodarne 2 o più prima della rewrite rule. Esempio:

    >RewriteCond A
    RewriteCond B
    RewriteRule 1
    >```
    
    
    Ho provato e forse ho capito perchè non funziona bene ...
    Ho provato ad usare questo set e funziona tutto, anche l'home page in inglese con il percorso "/en/" ... **funziona tutto tranne qualsiasi URL che sta viene generato all' interno della cartella "/en/"** ...
    
    RewriteCond %{REQUEST_URI} "/en/"
    RewriteCond %{REQUEST_URI}!=/en/
    RewriteRule (.*) $1 
    
    **Cioè tutti questi URL (e simili) funzionano**:
    
    w w w . nomedominio . com /prodotti/regali/
    w w w . nomedominio . com /prodotti/regali/bottiglie-e-thermos/
    ........... (in sostanza qualsiasi URL nella versione italiana, quindi qualsiasi URL che viene generato e che ovviamente non è contenuto nella cartella "/en/" funziona) ..............
    
    **Mentre tutti questi URL (e simili) che che vengono tutti generati dentro la cartella "/en/" (perchè siamo nell' inglese) non funzionano**:
    
    w w w . nomedominio . com / en /products/gifts/
    w w w . nomedominio . com / en /products/gifts/thermos/
    .......... (qualsiasi URL contenuto nella cartella "/en/") ............
    
    Quindi **dovremmo trovare un modo per far sì che qualsiasi URL contenuto nella cartella "/en/" funzioni con il rewriterule**, cosa che **adesso è bloccata** in qualche modo da questo set di regole.
    
    Secondo me è la seconda delle tre regole usate che non va bene ... cosa ne dici ?
    
    

  • User Attivo

    @Juanin said:

    Puoi fare in vari modi.

    Puoi combinare tutto in una sola regola o accodarne 2 o più prima della rewrite rule. Esempio:

    >RewriteCond A
    RewriteCond B
    RewriteRule 1
    >```
    
    
    Alla fine dopo giorni e giorni, ore e ore di ricerca e test sono riuscito a risolvere così:
    
    RewriteCond %{REQUEST_URI} ^/en[/]?
    RewriteCond %{REQUEST_URI} !^/en/products[/]?
    RewriteRule (.*) $1 
    
    Siccome tutte le URL delle categorie, sotto-categorie e prodotti sono dentro la cartella "/en/products/" ho fatto in modo che da questo URL tutto fosse attivo a livello di rewriterule.
    
    Così funziona ... blocca il rewriterule solo sul percorso specifico "/en/".
    
    Ciao