Visualizzazione risultati 1 fino 13 di 13

Discussione: Precedenza ad una pagina invece che una cartella [.htaccess]

  1. #1
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Unhappy Precedenza ad una pagina invece che una cartella [.htaccess]

    Ciao a tutti.
    Modificando il file .htaccess sono riuscito ad eliminare l'estensione delle pagine in PHP.
    Adesso mettiamo che ho una pagina e una cartella con lo stesso nome: la cartella ha la precedenza e ho dovuto creare un file index.php all'interno della cartella che includesse la pagina alla root precedente.
    Vorrei che accadesse il contrario, ovvero avendo pagina.php e pagina/ (che è una cartella), andando su sito.com/pagina si accedesse a pagina.php.
    Grazie.

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Con mod_rewrite, puoi aggiungere una o più condizioni prima di una regola di riscrittura; la regola viene eseguita solo se le condizioni sono soddisfatte.

    In questo caso, vuoi tradurre sito.com/pagina in sito.com/pagina.php s.se il file pagina.php esiste.

    Il controllo "questo file esiste" si fa con la condizione "-f", così:

    Codice:
    RewriteCond %{REQUEST_FILENAME} -f

  3. #3
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Quindi come dovrei sistemare quel codice?

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Dipende da quello che c'è dentro il tuo .htaccess. La sfera di cristallo, ahime, non ce la danno ancora.

  5. #5
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Codice:
    ***
    Come mai il codice cambia a seconda di quello che ho scritto?
    Ultima modifica di radiodelmomento : 04-03-2012 alle ore 15.41.56

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Citazione Originalmente inviato da radiodelmomento Visualizza messaggio
    Come mai il codice cambia a seconda di quello che ho scritto?
    Beh, non mi fido a darti indicazioni "precise" se non ho visto quello che hai già fatto tu.

  7. #7
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Quindi come dovrei modificare il file?

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Ah! pensavo avessi già aggiunto il RewriteCond

    Direi che se togli il primo dei due (la condizione "non deve esistere una directory con quel nome") dovresti essere a posto.

  9. #9
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Se elimino quello devo rimettere l'estensione .php.
    Se aggiungo il tuo codice devo rimettere l'estensione .php.
    Esiste una soluzione alternativa?
    Ultima modifica di radiodelmomento : 03-03-2012 alle ore 21.18.09

  10. #10
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Prova così:
    Codice:
    # RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond /membri/radiodelmomento/$1.php -f
    RewriteRule ^(.*?)/?$ $1.php [L]
    Commenti la prima, perché non ti interessa evitare le directory. Cambi la seconda affinché cerchi il pattern della regola sotto (cioé $1) invece di cercare il file richiesto dal browser ( ${REQUEST_FILENAME} nel codice originale). Nella terza riga, lasci fuori dalle parentesi una eventuale "/", così non viene raccolta dentro $1.

    Prima il RewriteCond -f cercava un file chiamato pagina/.php, che ovviamente non può esistere. Ora invece lasciamo fuori la barra finale, se presente, e quindi andiamo a vedere se esiste pagina.php.
    Ultima modifica di dreadnaut : 03-03-2012 alle ore 22.07.26

  11. #11
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Adesso va bene, ma il problema rimane sempre.
    Se elimino la cartella chiamata Pagina e vado su sito.com/Pagina rimane così.
    Se invece la cartella esiste il sito si trasforma in sito.com/Pagina/.
    Quindi è come facevo prima: creavo Pagina/index.php e includo ../Pagina.php, dove modifico i vari collegamenti.

  12. #12
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Citazione Originalmente inviato da radiodelmomento Visualizza messaggio
    Adesso va bene, ma il problema rimane sempre.
    eh?

    Ho provato e da me funziona correttamente. Se hai ancora problemi, o devi aggiustare il percorso /membri/radiodelmomento/ in quello che è (cioè la directory in cui hai l'htaccess), oppure è semplicemente un problema di cache del browser (Ctrl-F5!)

  13. #13
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Non è nessuno di quei due problemi...
    Ecco il codice completo che dovrei utilizzare (per ora non è in uso perché sto completando il sito):
    Codice:
    RewriteEngine On
    RewriteBase /
    
    RewriteRule ^Script/([a-zA-Z0-9]+)$		Script.php?nome=$1 [QSA,L]
    
    #RewriteCond %{REQUEST_FILENAME} !-d
    #RewriteCond %{REQUEST_FILENAME}\.php -f
    #RewriteRule ^(.*)$ $1.php
    
    RewriteCond /membri/lucart98/$1.php -f
    RewriteRule ^(.*?)/?$ $1.php [L]

Regole di scrittura

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