- Home
- Categorie
- Coding e Sistemistica
- PHP
- Aiuto con Mod_rewrite
-
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=$1dunque 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.
-
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.cssSe lo richiamiamo usando l'indirizzo:
css/stile.css
da un file nella root
www.nomesito.it/nomefile.htm
verrà trovatoSe lo richiamiamo da:
www.nomesito.it/nomecartella/nomefile.htmverrà cercato e non trovato
www.nomesito.it/nomecartella/css/stile.cssPuoi correggere in questo modo, richiamando non css/stile.css bensì:
/css/stile.cssIn 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.
-
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?
-
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:
-
configurazione dell'url dove verrà installato lo script tramite php;
-
utilizzo della direttiva RewriteBase nell'.htaccess;
(http://www.howtoprog.com/apache/guide/guida_definitiva_a_mod_rewrite_ed_htaccess/la_direttiva_rewritebase.html)
Inoltre tramite php in fase di installazione può leggere tutte le altre informazioni necessarie riguardo al path dove si trova lo script.
-
-
[PHP]
function webRoot(){
return dirname($_SERVER['SCRIPT_NAME']);
}
define('WEB_ROOT',webRoot());
[/PHP]