Override l () en Drupal
-
09-10-2019 - |
Pregunta
Actualmente estoy trabajando en un sitio de Drupal (6 *), que cuando está en el modo de producción se accede a través de algún tipo de proxy HTTP, lo que significa que tendrá que volver a escribir todos los enlaces para mi tema personalizado si el $_SERVER['HTTP_X_FORWARDED_SERVER']
variable se establece en el dominio gente va a acceder al sitio de.
El sitio tiene una gran cantidad de enlaces internos, principalmente a través de Views
. Mi pensamiento es que la manera más fácil de resolver esto sería a enganchar en las funciones del url()
l()
y / o y el proceso posterior de la URL antes de devolverla si se ha establecido HTTP_X_FORWARDED_SERVER
.
Mi problema es que no puedo encontrar la manera de gancho en estas funciones, o si es posible incluso sin tocar el núcleo, ¿alguien ha tenido que hacer esto? ¿Cómo lo resuelve?
ACTUALIZACIÓN: supongo que olvidó mencionar que el proxy no se encuentra en el nivel raíz del dominio proxy, así que tengo que volver a escribir todas las URLs (enlaces internos y caminos generados por el sistema de archivos CSS y las imágenes, etc.)
Ejemplos:
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
Solución
No estoy seguro si entiendo muy bien lo que necesita, pero yo creo que se debe echar un vistazo a la custom_url_rewrite_inbound () y custom_url_rewrite_outbound () funciones.
Otros consejos
Acabé tener que modificar el núcleo ligeramente, en sustitución de la línea de abajo en 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, '.')))));
A continuación, Acabo de crear una nueva carpeta de sitio con mi proxy.com URL y cambiado $base_url
y $cookie_domain
en el settings.php