Override l () in Drupal
-
09-10-2019 - |
Domanda
Al momento sto lavorando su un sito di Drupal (6 *), che quando è in modalità di produzione si accederà attraverso una sorta di proxy HTTP, il che significa che dovrò riscrivere tutti i link per il mio tema personalizzato se il $_SERVER['HTTP_X_FORWARDED_SERVER']
variabile è impostata al popolo dominio avrà accesso al sito da.
Il sito ha un sacco di collegamento interno, per lo più attraverso Views
. Il mio pensiero è che il modo più semplice per risolvere questo sarebbe quello di agganciare in url()
e / o le funzioni l()
e processo di post l'url prima di tornare se HTTP_X_FORWARDED_SERVER
è impostato.
Il mio problema è che non riesco a capire come il gancio in queste funzioni, o se è persino possibile senza toccare il nucleo, qualcuno ha dovuto farlo? Come hai fatto a risolverlo?
UPDATE: Credo che ho dimenticato di dire che il proxy non sarà situato sul livello della radice del dominio proxy, quindi ho bisogno di riscrivere tutti gli URL (sia link interni e percorsi generati dal sistema per i file CSS e le immagini, ecc)
Esempi:
proxy.com/path -> site.com/lots/of/dirs
proxy.com/path/node/1 -> site.com/lots/of/dirs/node/1
proxy.com/path/sites/all/themes/mytheme/my.css -> site.com/lots/of/dirs/sites/all/themes/mytheme/my.css
Soluzione
Non sono sicuro se capisco perfettamente quello che ti serve, ma penso che si dovrebbe avere uno sguardo al custom_url_rewrite_inbound () e custom_url_rewrite_outbound () funzioni.
Altri suggerimenti
Ho finito per dover modificare leggermente il nucleo, sostituendo la linea di seguito in bootstrap.inc
$server = explode('.', implode('.', array_reverse(explode(':', rtrim($_SERVER['HTTP_HOST'], '.')))));
con
$host = $_SERVER['HTTP_X_FORWARDED_HOST'] ? $_SERVER['HTTP_X_FORWARDED_HOST'] : $_SERVER['HTTP_HOST'];
$server = explode('.', implode('.', array_reverse(explode(':', rtrim($host, '.')))));
Poi ho appena istituito una nuova cartella del sito con il mio proxy.com URL e cambiato $base_url
e $cookie_domain
nel settings.php