sto realizzando un sito con drupal 5.1 in locale che (spero a breve) caricherò su server pubblici (aruba).
in locale il sito si trova ad un percorso del tipo "http://localhost/x" mentre quando sarà su aruba starà direttamente nella root del dominio di primo livello.
per cui, in locale ho modificato il file ".htaccess" in modo da specificare come rewritebase "/x"
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /x
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>
come ulteriore premesse:
- ho attivato le url semplificate
- nella root directory di drupal si trova la solita directory "files" che a sua volta contiene alcuni files tra i quali - ad esempio - una certa immagine "img.png"
fin qui tutto bene.
il mio problema è che se ad esempio creo un block in una sidebar,ed al suo interno ci voglio mettere l'immagine.. il sito inizia ad avere comportamenti strani.
- se come percorso dell'immagine scrivo
/x/files/img.png
l'immagine la vedo sempre in locale, ma certamente non la vedrò quando il sito sarà online. - se come percorso dell'immagine scrivo
files/img.png
a logica il comportamente online dovrebbe essere lo stesso che in locale, che però ha un problema:
- se la pagina corrente è la frontpage ("/") oppure una il cui percorso non prevede altri slash (ad esempio "/admin", ma non "/user/1") l'immagine si vede
- se il percorso della pagina corrente ha altri slash dopo quello che riferisce la frontpage, l'immagine non viene mostrata... poiché (credo) ad esempio nel caso di "/user/1" viene cercata al percorso "/user/files/img.png" - il percorso più giusto - a logica - dovrebbe essere
/files/img.png
in quanto indica esplicitamente che voglio "files" dentro la root "/"... ma ciò non vale in locale, dove "/" viene tradotto com "http://localhost/" invece di "http://localhost/x" nonostante (ripeto) abbia inserito la rewritebase nel file .htaccess che per ogni altro aspetto funziona (ad esempio nel caso degli url semplificati)
dove sbaglio? cosa ho dimenticato di controllare?
grazie in anticipo
ho verificato in un altro sito realizzato con Drupal, su un altro host.. ed effettivamente in quest'ultimo i files li riferisco alla maniera indicata nel punto 3 del post precedente.
ma proprio non capisco cos'è che non va bene in questo caso..
per quanto non abbia capito il motivo per cui non funzionava nel modo numero 3 suddetto, ... ho trovato una soluzione: uso la funzione base_path()
<img src='<?php print base_path(); ?>files/img.png' />
Ottimo, farai contento molta gente con questa soluzione. Per il problema 3 non saprei lascio la parola a chi è più esperto.