• User

    Aiuto con Mod_rewrite

    Ragazzi, ma utilizzare mod_rewrite implica l'utilizzo di path assoluti e non relativi con conseguente difficoltà di portabilità del proprio codice?

    Spiego
    ho utilizzato in un mio file .htaccess per una mia applicazione la seguente regola:

    RewriteEngine On
    RewriteRule ^([^/]+)/$ index.php?catogoria=$1

    dunque avrò delle cartelle corrispondenti alle mie categoria dell'index, cartelle che non esistono realmente su server.

    Il problema e che tutti i fogli di stile e le immagini non sono più visualizzabili perchè si perde il riferimento dei path relativi.

    Quanlcuno può aiutarmi?
    Grazie.


  • Super User

    Ciao 🙂

    Puoi usare i path relativi, riferendoti alla root del sito.

    Cioè non rispetto al file, che cambiando cartella crea problemi, ma rispetto all'indirizzo base del sito.

    Per intenderci, dovrai semplicemente aggiungere un slash.

    Ti faccio degli esempi.

    Mettiamo il caso di voler richiamare il file
    www.nomesito.it/css/stile.css

    Se lo richiamiamo usando l'indirizzo:

    css/stile.css

    da un file nella root
    www.nomesito.it/nomefile.htm
    verrà trovato

    Se lo richiamiamo da:
    www.nomesito.it/nomecartella/nomefile.htm

    verrà cercato e non trovato
    www.nomesito.it/nomecartella/css/stile.css

    Puoi correggere in questo modo, richiamando non css/stile.css bensì:
    /css/stile.css

    In questo modo da qualsiasi percorso tu richiami il file lo slash riporta tutto alla root e verrà sempre e comunque cercato www.nomesito.it/css/stile.css

    Più che di php la discussione è di html e forse sarebbe il caso di spostarla.

    :ciauz:


  • User

    Claudio, grazie per l'aiuto ma non sono un neofita,
    questa soluzione che mi hai proposto è della serie "la trovavo anche io".

    Non risolve per niente il problema della portabilità del codice, come specifico nella discussione.

    Ti spiego se io voglio progettare un modulo o un applicazione che deve essere installata in sottocartelle e deve essere indipendete da quello che c'è nella root del server non posso comunque farlo.

    Poichè dovrei comunque installare delle delle cartelle nella root.

    La mia domanda è, esiste un metodo per lavorare con il mod_rewrite e path relativo rendendo portabile un intero progetto?


  • Super User

    Ciao 🙂

    Scusami, ma forse avevo frainteso questa parte della richiesta:

    Il problema e che tutti i fogli di stile e le immagini non sono più visualizzabili perchè si perde il riferimento dei path relativi.
    Non era mia intenzione darti del neofita.

    Non ho comunque, tuttora, colto il tuo problema, tuttavia provo ad indicarti le possibili soluzioni.

    Penso che nel tuo caso forse possa tornare utile tener conto che si possono configurare alcune cose e poi sfruttarle per la portabilità dello script:

    Inoltre tramite php in fase di installazione può leggere tutte le altre informazioni necessarie riguardo al path dove si trova lo script.


  • User

    [PHP]
    function webRoot(){
    return dirname($_SERVER['SCRIPT_NAME']);
    }
    define('WEB_ROOT',webRoot());
    [/PHP]

    😄