apache RewriteCond-Variable für Teile von REQUEST_URI

1498
groovehunter

Ich migriere eine statische HTML-Site zu Drupal-CMS. Die meisten Inhalte habe ich gerade erst kopiert und möchte sie so lassen, wie sie ist, und die relativen Links zu PDF-Dateien herstellen. Drupal hat alle Dateien in diesem Verzeichnis: (Ich habe den ganzen Baum von FORMER SUB DIRS kopiert - schön, möchte ich das behalten)

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

So werden jetzt alle relativen Links in den CMS-Inhalten:

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

Ich möchte überprüfen, ob die Datei vorhanden ist, und dann die URL neu schreiben

RewriteEngine On RewriteCond /var/www/mydomain.xyz/sites/mydomain.xyz/files/% -f RewriteRule (.*)$ /sites/mydomain.xyz/files/$1 [R] 

Wie kann ich das erreichen?

0

2 Antworten auf die Frage

2
0xC0000022L

Du brauchst RewriteCondRückreferenzen. Einzelheiten entnehmen Sie bitte dem Handbuch .

Grob (aber ich habe momentan keine Möglichkeit, es zu testen):

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

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

0
groovehunter

funktioniert so

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

(Leider habe ich vergessen, dass es eine andere Ebene von Subdirs direkt unter docroot gibt, die Apache nicht kennen kann.)

Ich möchte herausfinden, ob ich den Drupal-Pfad-Alias ​​für alle Dokumente der obersten Ebene gesetzt habe - ich werde sehen

Sie können Ihre ursprüngliche Frage bearbeiten. Wenn Sie jedoch einige Bedingungen benötigen, können Sie [E: VARNAME: value] in Ihren Regeln verwenden, um Variablen in Abhängigkeit von bestimmten Bedingungen festzulegen und diese dann in anderen Regeln (oder normalerweise anderswo) zu verwenden ... 0xC0000022L vor 13 Jahren 0