Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    %{REQUEST_FILENAME} !-f non funziona

    Buongiorno a tutti,
    il mio file .htacces è scritto in questo modo

    codice:
    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /
    
    ErrorDocument 404 http://www.site.com
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} !-d
    
    RewriteRule ^primoelemento_([^/\.]+).htm/?$ elemento-dettaglio.php?citta=$1 [L]
    il problema grave è che ho tanti file fisici che possono iniziare con
    codice:
    sito.com/primoelemento_nomefile.htm
    attualmente, se io scrivo, per esempio, sito.com/primoelemento_milano.htm
    vengo rediretto sul file corretto che elemento-dettaglio.php?citta=milano

    MA SE SCRIVO sito.com/primoelemento_gennaro.htm
    verrò rediretto erratamente sul file elemento-dettaglio.php?citta=gennaro

    il file sito.com/primoelemento_gennaro .htm però esiste ma viene ignorato!

    ovviamente perchè non viene interpretata la regola
    codice:
    RewriteCond %{REQUEST_FILENAME} !-f
    Qui ho letto che se ci sono molti file si può verificare il problema descritto. E' ver0? e come potrei risolvere?
    ---------------------------
    danielix05

  2. #2

    up!

    qualcuno mi aiuta?
    ---------------------------
    danielix05

  3. #3
    Utente di HTML.it L'avatar di Enoa
    Registrato dal
    Jul 2005
    Messaggi
    573

    Re: %{REQUEST_FILENAME} !-f non funziona

    È errata la logica qui:
    codice:
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} !-d
    un file che non esiste è diverso da una file o diverso da una cartella realmente esistenti
    un file che esiste invece non sarà mai una cartella e quindi la seconda cond fa eseguire la rule.
    Devi cambiare or in and o ometterlo direttamente
    codice:
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

  4. #4

    grazie Enoa

    la soluzione indicata l'avevo già testata ma senza successo.

    non capisco come mai il file htacces non analizzi tutto come dovrebbe. forse davvero se ci sono tanti file nella directory va in panne?

    ---------------------------
    danielix05

  5. #5
    Utente di HTML.it L'avatar di Enoa
    Registrato dal
    Jul 2005
    Messaggi
    573

    Re: grazie Enoa

    Originariamente inviato da danielix05
    forse davvero se ci sono tanti file nella directory va in panne?
    non ho esperienza in merito e non ti so dire, quanti file ci sono nella cartella?
    Questa però è errata, è una doppia negazione , la condizione è sempre vera:
    codice:
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} !-d
    A qualunque cosa si riferisca l'url-Path la rule verrà eseguita perchè un file non sarà mai una cartella e una cartella non sarà mai un file e un file/cartella che non esistono non saranno mai un file/cartella che esistono.
    Non so che test hai fatto e se il codice nell'htaccess è tutto li, personalmente preferisco un'altro approccio, subito dopo a RewriteEngine On inserisco:
    codice:
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule . - [L]
    questo fa sì che per ogni risorsa realmente presente sul filesystem, ogni ulteriore rule non verrà considerata.

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.