it-swarm-es.com

¿Cómo se pueden utilizar los subdirectorios anidados y los enlaces simbólicos sin entrar en conflicto con una instalación de sitios múltiples Drupal?

Mi pregunta es básicamente un reflejo de la pregunta que se encuentra aquí (que desafortunadamente no tiene una respuesta clara): http://groups.drupal.org/node/20604

Tenga en cuenta que esta no es una pregunta sobre la configuración de múltiples sitios, sino más bien una pregunta sobre un caso de Edge complicado; por favor lea antes de saltar a sugerencias. Además, eche un vistazo al enlace de arriba si necesita más información.

Tenga en cuenta que los sitios múltiples funcionan generalmente bien, pero no en este caso.

Algunas verdades:

  • Estoy usando enlaces simbólicos (en RHEL5 para ser exactos)
  • Estoy usando Drupal 6.20
  • Estoy usando apache
  • Estoy usando subdirectorios (NO subdominios, cambiar a subdominios es no una respuesta aceptable)
  • Mi Drupal los directorios del sitio están anidados a dos niveles de profundidad (por ejemplo, /campus/bus, /campus/news)
  • Todos los sitios Drupal usan la misma base de código en el directorio /campus
  • Los sitios Drupal) utilizan bases de datos diferentes (propias)

En mi caso, hay decenas de sitios, pero el primer conflicto que noté fue el siguiente. Hay dos sitios en URL como la siguiente estructura:

drupal.drupalsite.com/campus/bus

drupal.drupalsite.com/campus/news

En sites/[foldername] Las carpetas respectivas son:

drupal.drupalsite.com.campus.bus

drupal.drupalsite.com.campus.news

La carpeta del campus en la raíz web contiene la Drupal install, y también los enlaces simbólicos, por lo que en /var/www/campus Hay, por ejemplo, news -> ./, bus -> ./.

En el subsitio 'bus', intentar ir a https://drupalsite.com/campus/bus/news Confunde Drupal. Parece eliminar todo en la solicitud después del último directorio. Por ejemplo, drupalsite.com/campus/bus/news en su lugar se resolverá en drupalsite.com/campus/bus y drupalsite.com/campus/bus/news/headlines devolverá un 404 not found.

Para otro punto de datos, puse un var_dump En $dir En la función conf_path() para ver cuántos directorios se estaban mirando para cada solicitud. Para una URL que no entra en conflicto, como un autobús/programas de pregrado, obtuve lo siguiente:

drupal.drupalsite.com.campus.bus

Sin embargo, para una URL en conflicto, como autobús/noticias/titulares, obtengo

drupal.drupalsite.com.campus.bus.news
drupalsite.com.campus.bus.news
com.campus.bus.news
drupal.drupalsite.com.campus.bus

Hay un parche que podría permitir que la configuración de múltiples sitios se realice a través de sites.php en lugar de a través del método de uso de enlaces simbólicos, sin embargo, implicaría piratear el núcleo y, por lo tanto, no estoy dispuesto a entretenerlo, aunque como referencia. está aquí: http://drupal.org/node/231298#comment-3769752

Para señalar, también probé la mayoría de las sugerencias en el groups.drupal.org original. hilo, así como numerosos trucos en .htaccess y mi archivo httpd.conf, todo fue en vano. Por favor comente si necesita más información para responder la pregunta.

3
coderintherye

¿Estás usando solo una reescritura? Tengo esta configuración exacta, y me ocupo de ella con una reescritura separada para cada subdirectorio. Si solo usa la reescritura predeterminada de index.php, la ruta se vuelve a escribir a la predeterminada, como drupal.drupalsite.com/index.php?q=/campus/news, que es de donde proviene el 404. También utilizo alias en la configuración de nivel de servidor en lugar de enlaces simbólicos. Hace las cosas más limpias. (Alias ​​/ campus/bus/var/www/html/lo que sea)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /campus/bus/
RewriteRule ^(.)$ /campus/bus/?q=$1  [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /campus/news/
RewriteRule ^(.)$ /campus/news/?q=$1  [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /
RewriteRule ^(.*)$ ?q=$1  [L,QSA]
2
davidhernandez

Creo que la configuración que tiene en este momento en los subdirectorios no es un poco estándar y puede que no sea ampliamente compatible.

Dado que ya estás de pista, puede valer la pena probar un pequeño parche hasta el núcleo. Especialmente porque el parche está en D7.

O simplemente podría cambiar a D7. No se necesita hacker básico.

0
Jeremy French