it-swarm-es.com

Problemas de URL base y subdirectorios

Tengo un drupal sitio en http://example.com y una versión de desarrollo del mismo sitio en http: //another.example. com/subdir . Cuando estoy trabajando en la versión de desarrollo, el contenido que hace referencia a/sites/default/files /, como images, no funciona porque necesita incluir la parte '/ subdir' de la ruta . Ajuste $base_url no funciona porque usa el atributo BASE elemento href que no afecta a las URL que comienzan / si el href incluye un subdirectorio.

¿Cuál es la mejor manera de incluir el subdirectorio en las referencias de imagen? ¿Necesito recurrir a una reescritura del servidor?

2
Bobby Jack

Hay dos cosas que puede hacer aquí para intentar que su sitio sea más portátil.

En tus plantillas:

  • Utilice siempre l() para todos los enlaces (incluso los enlaces JavaScript)
  • Si necesita hacer referencia a una imagen en el tema, use:

    <img src="<?php echo $base_path . drupal_get_path('theme', 'themename'); ?>/logo.png" />
    

En tu contenido:

  • Realmente no tiene una forma de preservar las URL de contenido cargadas a menos que use alguna forma de administrador de archivos que no crea enlaces absolutos, sino enlaces que se envían a drupal que redirige al archivo
  • Si lo anterior no va a funcionar para usted, entonces se requiere una modificación de las reglas de reescritura para el sitio drupal que se encuentra bajo el subdirectorio) para reescribir básicamente todas las URL solicitadas que comienzan con sitios/archivos/predeterminados /(.*) reescrito en subdir/sites/default/files/$ 1

Y la regla de Apache mod_rewrite puede parecerse a la siguiente.

# Redirect all files requests to a subdir
RewriteRule ^/?sites/default/files/(.*) /subdir/sites/default/files/$1 [R=301,L]
4
wiifm

El módulo Patológico puede ayudarlo con esto.

1
longwave

Si tiene alguna flexibilidad sobre el dominio del sitio de desarrollo, descubrimos que todo funciona si usa:

ejemplo.com -> producción

dev.example.com -> desarrollo

El directorio de su sitio funcionará como /sites/example.com en ambos casos. Solo necesita modificar su base_url para que coincida con el dominio.

1
Craig Hyatt