![Apache RewriteCond-Variable für Teile von REQUEST_URI](https://rvso.com/image/1267752/Apache%20RewriteCond-Variable%20f%C3%BCr%20Teile%20von%20REQUEST_URI.png)
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 RewriteCond
Rü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 %1
ist eine RewriteCond
Rückreferenz, im Gegensatz zu einer RewriteRule
Rü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