Après avoir fait un patch très moche, m'être fait incendier par le mainteneur du module, j'ai décidé de réfléchir plus et d'introspecter plus loin pour voir d'où venait mes problèmes. Et j'ai trouvé, voici l'explication en couleurs !:
file_create_url() à tout cassé, parce que:
<?php
function file_create_url($path) {
// Strip file_directory_path from $path. We only include relative paths in urls.
if (strpos($path, file_directory_path() . '/') === 0) {
$path = trim(substr($path, strlen(file_directory_path())), '\\/');
}
switch (variable_get('file_downloads', FILE_DOWNLOADS_PUBLIC)) {
case FILE_DOWNLOADS_PUBLIC:
return $GLOBALS['base_url'] .'/'. file_directory_path() .'/'. str_replace('\\', '/', $path);
case FILE_DOWNLOADS_PRIVATE:
return url('system/files/'. $path, NULL, NULL, TRUE);
}
}
?>Si on regarde attentivement ce code, on voit en dur dedans:
<?php
$GLOBALS['base_url']
?>Si on regarde la fonction url(), on verra quelque chose du genre:
<?php
$base = ($absolute ? $base_url . '/' : base_path());
?>Je n'ai absolument aucune idée de pourquoi l'équipe Drupal à décidé de faire ainsi. Faire passer toutes les URL de fichier sans distinction par des URL absolues. Du coup, ça me bloque pas mal, puisqu'on utilise des sites derrière des proxy HTTP, on se retrouve avec des sites qui renvoient des URL absolues avec comme domaine les DNS internes de l'entreprise..
Et là, on est bien coincé, parce qu'on a pas envie d'aller patcher le coeur de Drupal sur les installations qu'on fait, pour plusieurs raisons, et surtout pour la maintenabilité.
3 semaines 5 jours
admin: Note about existing spip2drupal project
3 semaines 6 jours
Anonymous (non vérifié): spip2drupal
6 semaines 3 jours
Tsunulukai (non vérifié): Tout à fait
10 semaines 8h
admin: Merci! C'est exactement ce
10 semaines 6 jours
Baloo (non vérifié): Table de routage
18 semaines 2 jours
pounard: Il est très loin
18 semaines 4 jours
Anonymous (non vérifié): suite ?
19 semaines 2 jours
pounard: Duplicate!
20 semaines 6 jours
pounard: Suivi mensuel des lunettes
28 semaines 6h
admin: I always use casts, no
28 semaines 2 jours
mini (non vérifié): To know in php
28 semaines 5 jours
pounard: Triple oooups