Visualizzazione risultati 1 fino 5 di 5

Discussione: [.htaccess] Applicare una rewrite solo se il file non esiste

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito [.htaccess] Applicare una rewrite solo se il file non esiste

    Buongiorno,
    pensavo di aver risolto (ieri) ma purtroppo mi sbagliavo, allora ho bisogno di applicare una determinata rewrite solo se l'URL richiesta non esiste come pagina nel server.

    Cioè se io nella mia root ho:

    • /abc.php
    • /cde.php
    • /efg.html


    E richiamo /def.php o qualsiasi altra URL che non esiste voglio che si deve applicare la rule:

    Codice PHP:
    RewriteRule ^([a-z]+)\\.html$ $1.py [L,QSA]
    Il codice da me in uso è:

    Codice PHP:
    RewriteEngine On
    RewriteBase
    /

    RewriteCond %{REQUEST_URI} !(directory1|directory3|directory5)
    RewriteRule ^([a-z]+)\\.html$ $1.py [L,QSA]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule
    ^([a-z]+)\\.php$ $1.chm [L,QSA]
    Ho provato anche così:

    Codice PHP:
    RewriteEngine On
    RewriteBase
    /

    RewriteCond %{REQUEST_URI} !(directory1|directory3|directory5)
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule
    ^([a-z]+)\\.html$ $1.py [L,QSA]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule
    ^([a-z]+)\\.php$ $1.chm [L,QSA]
    Ma comunque non funziona.
    Ultima modifica di miki92 : 14-06-2010 alle ore 20.30.34 Motivo: vBulletin mi modifica il codice
    Apprezzi l'aiuto? Offrimi un caffè!

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

    Predefinito

    La condizione giusta è:
    Codice:
    RewriteCond %{REQUEST_FILENAME} !-f
    P.S. Ti consiglio di fare l'escape del carattere . :
    Codice:
    RewriteRule ^([a-z]+).html$ $1.py [L,QSA] [L]
    Così la regola accetta anche file:html (file;html etc...) e non solo file.html, per risolvere:
    Codice:
    RewriteRule ^([a-z]+)\.html$ $1.py [QSA,L]
    Ultima modifica di javascripter : 14-06-2010 alle ore 20.13.35

  3. #3
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Allora, tutto ciò che mi hai scritto in realtà già è presente nel codice che ho postato sopra, solo non capisco perchè vBulletin mi cancella l'escape e mi abbia aggiunto [L] dopo [L,QSA].

    Per il punto esclamativo ci ho pensato e l'ho usato già (vBulletin l'ha cancellato) ma comunque non funziona.
    Apprezzi l'aiuto? Offrimi un caffè!

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

    Predefinito

    Ma è strano perchè quella condizione applica la regola soltanto se %{REQUEST_FILENAME} non è un file esistente.

  5. #5
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Lo so, per questo sto sbattendo la testa da 3 giorni tra rewritecond, apache e guide web all'uso di questa rule.

    Oltre questa regola che non funziona...beh...la condizione causa dei conflitti con la personalizzazione degli errori, se l'URL inesistente non ha una delle estensioni da riscrivere (nonostante condizione) funziona, altrimenti no.
    Ultima modifica di miki92 : 14-06-2010 alle ore 22.47.28
    Apprezzi l'aiuto? Offrimi un caffè!

Regole di scrittura

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