ubuntuusers.de

Regeln für Apache erstellen mit Hilfe von VI oder Shell

Status: Gelöst | Ubuntu-Version: Ubuntu 10.04 (Lucid Lynx)
Antworten |

Wiesel82

Anmeldungsdatum:
19. Oktober 2007

Beiträge: 27

Hi zusammen, ich habe eine Sammlung von Bilder (z.B. bild00001, bild00002, ..., bild78182333)

Jetzt sollen nicht alle sondern nur eine Liste von den Bildern umgeleitet werden.

Wenn ich jetzt z.B. die Liste vollständig habe, will ich daraus z.B. mit VI mir die Regel erstellen.

Liste: bild000004 bild034563 bild1021597 ....

z.B.

#RewriteRule /bilder/bild1021597(.*)$ http://bilderfarm.xy/bild1021597$1

ich weiß dass ich mit ":%s/^bild/RewriteRule \/bilder\/bild/g" den ersten Teil der Regel für alle erstelle und den zweiten Teil, bis bild, eben mit "$" erstellen kann.

Aber wie kann ich jetzt die Bildnummer nochmal ans Ende kopieren, sodass ich wirklich für alle Bilder in der Liste eine einheitlich aussehende Regel wie oben bekomme.

Viele Grüße

Benjamin

Lasall

Ehemalige
Avatar von Lasall

Anmeldungsdatum:
30. März 2010

Beiträge: 7723

Hi Wiesel82,

kannst du bitte ein Vorher/Nachher zeigen? Ausgang ist:

bild000004 bild034563 bild1021597

Und Nachher soll es so sein?

#RewriteRule /bilder/bild000004(.*)$ http://bilderfarm.xy/bild000004$1
#RewriteRule /bilder/bild034563(.*)$ http://bilderfarm.xy/bild034563$1
#RewriteRule /bilder/bild1021597(.*)$ http://bilderfarm.xy/bild1021597$1

Gruss Lasall

EDIT: Falls ja, wäre das in etwa:

1
:%s#\v%(^|\s+)(bild\d+)#\#RewriteRule /bilder/\1(.*)$ http://bilderfarm.xy/\1$1\r#g

Erklärung:

:%s#\v%(^|\s+)(bild\d+)#\#RewriteRule /bilder/\1(.*)$ http://bilderfarm.xy/\1$1\r#g
││││ │││││ ││││     ││││ │                     │                            │   ││└─ Option für substitute-Befehl: Befehl für alle Vorkommen in Zeile durchführen
││││ │││││ ││││     ││││ │                     │                            │   │└─ substitute-Befehl endet an letztem Trenner
││││ │││││ ││││     ││││ │                     │                            │   └─ Zeilenumbruch einfügen
││││ │││││ ││││     ││││ │                     │                            └─  erneut Gruppierung einsetzen
││││ │││││ ││││     ││││ │                     └─ auf erste gemerkte Gruppierung zurückgreifen und einsetzen
││││ │││││ ││││     ││││ └─ Raute escapen, da diese ja der Trenner des substitute-Befehls ist
││││ │││││ ││││     │││└─ Suchbegriff endet an Trenner; nun folgt der Ersetzungsterm
││││ │││││ ││││     ││└─ Gruppierung endet
││││ │││││ ││││     │└─ mindestens einmal
││││ │││││ ││││     └─ Zahlenzeichen
││││ │││││ │││└─ nächste Gruppierung startet (diesmal Inhalt merken)
││││ │││││ ││└─ Gruppierung endet
││││ │││││ │└─ mindestens einmal
││││ │││││ └─ Leerzeichen-Zeichen (Leerzeichen oder Tab)
││││ ││││└─ oder
││││ │││└─ matcht anfang der Zeile
││││ ││└─ Gruppierung starten
││││ │└─ die folgende Gruppierung interessiert nicht, nicht merken
││││ └─ "very magic" mode für folgende reguläre Ausdrücke verwenden (Verzicht auf häufiges Escapen von mit '\')
│││└─ Raute # als Trenner für Ersetzungskommando
││└─ Ersetzungskommando
│└─ Kommando global ausführen
└─ in Kommandozeilenmodus wechseln

Wiesel82

(Themenstarter)

Anmeldungsdatum:
19. Oktober 2007

Beiträge: 27

Hi Lasall, hat ein bisschen gedauert bis ich die Zeit hatte nach zu schauen. So wie du es verstanden hasst passt es. Genau das Ergebnis wollte ich. Vielen Dank hat super funktioniert. Dank deiner Erklärung konnte ich den kompletten Befehl auch gut verstanden, um es später wieder verwerten zu können.

Viele Grüße Wiesel

Antworten |