Apache RewriteCond variable para partes de REQUEST_URI

Apache RewriteCond variable para partes de REQUEST_URI

Migro un sitio html estático a drupal CMS, la mayor parte del contenido simplemente copié el html por ahora y quiero dejarlo como está y hacer que funcionen los enlaces relativos a los archivos pdf. Drupal tiene todos los archivos en este directorio: (copié todo el árbol de ANTIGUOS SUBDIRS; bueno, quiero conservarlo)

 DOCROOT/sites/mydomain.xyz/files/FORMER/SUB/DIRS/filename.pdf

Entonces todos los enlaces relativos en el contenido del CMS ahora se convierten en:

 http://mydomain.xyz/node/FORMER/SUB/DIRS/filename.pdf

Quiero comprobar si el archivo existe y luego reescribir la URL.

RewriteEngine On
RewriteCond     /var/www/mydomain.xyz/sites/mydomain.xyz/files/%{REQUEST_URI MINUS "node/"} -f
RewriteRule     (.*)$ /sites/mydomain.xyz/files/$1  [R]

¿Cómo podría lograr eso?

Respuesta1

Necesitará RewriteCondreferencias retrospectivas. Por favor mirael manualpara detalles.

Aproximadamente (pero no tengo forma de probarlo en este momento):

RewriteCond     %{REQUEST_URI MINUS} ^/node(.*)
RewriteCond     /var/www/mydomain.xyz/sites/mydomain.xyz/files/%1 -f
...

Es %1una RewriteCondreferencia inversa, a diferencia de una RewriteRulereferencia inversa (que sería $1)

Respuesta2

funciona de esa manera

RewriteCond     %{REQUEST_URI} ^/node(.*)
RewriteCond     /var/www/schottdorf.de/sites/schottdorf.de/files%1 -f
RewriteRule     .* /sites/schottdorf.de/files/%1  [L]

(pero desafortunadamente olvidé que hay otro nivel de subdirectorios directamente debajo de docroot que Apache no puede conocer).

Quiero saber si configuro el alias de ruta de Drupal para todos los documentos de nivel superior. Ya veré

información relacionada