Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Errore su rewrite

  1. #1

    Errore su rewrite

    Salve, premettendo che sono riuscito a far funzionare il rewrite (problema risolto in post precedente) ora ho un problema di scrittura che non riesco a capire.

    Il mio sito è bilingua ed ha la tipica struttura http:\\sito\it\ per italiano http:\\sito\en\ per inglese e il tutto è gestito da rewrite.

    Ora che sto iniziando a sviluppare completamente il sito ho un problema, ve lo semplifico con un link, vorrei ad esempio che scrivendo http:\\sito\it\wp.html mi chiami http:\\sito\index.php passando lang=it (già lo fa) e pag=wp, siccome non mi interessa trattare wp come variabile ho scritto in questo modo.

    codice:
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([a-zA-Z]+)/ index.php?lang=$1 [L,QSA]
    RewriteRule ^([a-zA-Z]+)/wp.html index.php?lang=$1&pag=wp [L,QSA]
    In questo modo non funziona in quanto pag non viene passato a index, è come se una volta trovata la prima occorrenza RewriteRule non controlla la seconda, ha in effetti senso.

    Quindi ho provato ad invertire:
    codice:
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([a-zA-Z]+)/wp.html index.php?lang=$1&pag=wp [L,QSA]
    RewriteRule ^([a-zA-Z]+)/ index.php?lang=$1 [L,QSA]
    Ora funziona correttamente, nel senso che a index arriva pag=wp... peccato che non prende più in considerazione la RewriteCond !-f ed inspiegabilmente tutti i link assoluti interni alla pagina, immagini, css esterni, non funzionano più...

    La domanda è: dove sbaglio?

    Grazie in anticipo per l'aiuto!

  2. #2
    Uff, ho risolto, anche se non ho ben capito se la mia risoluzione è giusta e andava fatto così o ho scritto male qualcosa e sono stato costretto ad una cosa simile.

    Ho inserito le RewriteCond prima di ogni RewriteRule:
    codice:
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([a-zA-Z]+)/wp.html index.php?lang=$1&pag=wp [L,QSA]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([a-zA-Z]+)/ index.php?lang=$1 [L,QSA]
    In questo modo funziona in maniera impeccabile, mi rimane solo il dubbio che siano effettivamente da mettere i RewriteCond sempre prima di ogni RewriteRule...

  3. #3
    Utente di HTML.it L'avatar di Enoa
    Registrato dal
    Jul 2005
    Messaggi
    573
    Metti questo blocco all'inizio del file .htaccess o listato per il rewrite
    codice:
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule . - [L]
    non fa assolutamente nulla, se non dire ad apache che non deve considerare le rule seguenti se una delle 2 cond è soddisfatta

  4. #4
    Ok, tnks per la dritta.

    Cmq è giusto così come ho fatto? Ovvero il RewriteCond lo devo sempre riscrivere?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.