Apache RewriteCond-Variable für Teile von REQUEST_URI

Apache RewriteCond-Variable für Teile von REQUEST_URI

Ich migriere eine statische HTML-Site zum Drupal-CMS. Die meisten Inhalte habe ich vorerst einfach als HTML kopiert und möchte sie so lassen, wie sie sind, und die relativen Links zu PDF-Dateien funktionsfähig machen. Drupal hat alle Dateien in diesem Verzeichnis: (Ich habe den gesamten Baum der EHEMALIGEN UNTERVERZEICHNISSE kopiert – gut, das möchte ich behalten)

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

Alle relativen Links in den CMS-Inhalten lauten jetzt:

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

Ich möchte prüfen, ob die Datei existiert und dann die URL neu schreiben

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

Wie könnte ich das erreichen?

Antwort1

Sie benötigen RewriteCondRückverweise. Bitte lesen Siedas Handbuchfür Details.

Ungefähr (aber ich habe im Moment keine Möglichkeit, es zu testen):

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

Dies %1ist eine RewriteCondRückreferenz, im Gegensatz zu einer RewriteRuleRückreferenz (die wäre $1)

Antwort2

funktioniert so

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

(aber leider habe ich vergessen, dass es direkt unter Docroot eine weitere Ebene von Unterverzeichnissen gibt, die Apache nicht kennen kann.)

Ich möchte herausfinden, ob ich für alle Dokumente der obersten Ebene einen Drupal-Pfadalias einstelle - ich werde sehen

verwandte Informationen