Deus Figendi: .httaccess: Einige Dateien sind auf eine andere Domain umgezogen

Guten Morgen,

ich stecke in folgender Situation: Der Podcast morgenradio.de hat diverse Medien-Dateien auf ein CDN umgezogen, leider gibt es von diesen URLs all überall Caches, die die alte URL noch vorhalten. Deshalb habe ich den Betreiber gebeten ob er an dieser Stelle nicht Weiterleitungen einrichten könnte, damit die Clients die Dateien auch dann finden, wenn sie noch veralterte Informationen haben (der Podcast-Feed ist auch nur 50 Episoden lang, alles davor kann auch nicht neu gecached werden, weil es nicht mehr verfügbar ist). Der Betreiber hat mir sinngemäß geantwortet: "Naja, eigentlich find' ich's okay so wie es ist, aber wenn DU mir die entsprechende .httaccess schreibst bau ich sie ein"

Jaa, jetzt weiß ich zwar ungefähr wofür diese Datei gut ist und gaaaanz grob wie sie funktioniert, aber ich habe sie noch nie so richtig produktiv eingesetzt. Ich habe mir jetzt hier und dort angelesen, wie so eine Weiterleitung funktioniert, aber ich bin immernoch sehr unsicher, ob ich das richtig verstanden habe (es scheint auch irgendwie kein typischer Fall zu sein, denn ich habe keinen exakt passenden Beispielcode gefunden für "ein Verzeichnis ist jetzt auf einer anderen Domain")

Und deshalb frage ich nun hier ob ich das richtig gemacht habe und wenn nicht: Wie geht das? :)

Die Aufgabe ist etwa so: Die Datei(en) lagen bisher hier

https://morgenradio.de/downloads/mr_0545_09723_Zctrjdf.mp3 und sind nun umgezogen nach

https://cdn.podseed.org/explikator/mr_0545_09723_Zctrjdf.mp3

Dafür soll ein redirect geschaffen werden. Aus meinen Recherchen ergab sich soetwas:

RewriteEngine On

RewriteRule ^\/downloads\/(.*)$ https://cdn.podseed.org/explikator/$1 [R=301,L]

oder wenn man die .httaccess-Datei In das Download-Verzeichnis legt, kann man den Teil wahrscheinlich weglassen oder?

RewriteEngine On

RewriteRule ^(.*)$ https://cdn.podseed.org/explikator/$1 [R=301,L]

Ich könnte auch versuchen eine RegExp zu schreiben, die nur die .mp3 erfasst, aber ich weiß nicht genau ob das gewünscht/notwendig ist.

Der Server auf dem das läuft identifiziert sich selbst als Apache/2.4.43 (Unix)

Ich frage halt, weil ich keinen Zugriff auf diesen Server habe und das nicht ausprobieren kann, daher will ich auf Anhieb eine korrekte Lösung präsentieren können.

Vielen Dank schonmal 😀

akzeptierte Antworten

  1. @@Deus Figendi

    Dafür soll ein redirect geschaffen werden. Aus meinen Recherchen ergab sich soetwas:

    RewriteEngine On
    
    RewriteRule ^\/downloads\/(.*)$ https://cdn.podseed.org/explikator/$1 [R=301,L]
    

    Aus deinen Recherchen hätte sich ergeben sollen, dass „das bedeutendste Konzept hinter mod_rewrite“ das ist, „wann man dies vermeiden sollte einzusetzen“. [When not to use mod_rewrite]

    Dort findest du gleich ganz oben auch die Alternative, die für dich infrage kommen sollte.

    Ich frage halt, weil ich keinen Zugriff auf diesen Server habe und das nicht ausprobieren kann, daher will ich auf Anhieb eine korrekte Lösung präsentieren können.

    Denkbar schlechte Voraussetzung.

    🖖 Stay hard! Stay hungry! Stay alive! Stay home!

    --
    “Turn off CSS. If the page makes no sense, fix your markup.” —fantasai
    1. Hallo Gunnar, vielen Dank für deinen Fingerzeig.

      Aus deinen Recherchen hätte sich ergeben sollen, dass „das bedeutendste Konzept hinter mod_rewrite“ das ist, „wann man dies vermeiden sollte einzusetzen“. [When not to use mod_rewrite]

      Dort findest du gleich ganz oben auch die Alternative, die für dich infrage kommen sollte.

      Tjoa, da habe ich wohl schlecht gesucht. Ja, das allererste Beispiel scheint ja genau das zu sein was ich suche, das Beispiel ist ja

      Redirect "/one/" "http://one.example.com/"
      

      und angepasst auf meinen Fall wäre das wohl

      Redirect "/downloads/" "https://cdn.podseed.org/explikator/"
      

      Oder (wenn ich etwas weiter lese) wäre das hier vielleicht sogar noch eleganter:

      RedirectMatch 301 "/downloads/(mr_\w+\.mp3)$" "https://cdn.podseed.org/explikator/$1"
      

      Ich frage halt, weil ich keinen Zugriff auf diesen Server habe und das nicht ausprobieren kann, daher will ich auf Anhieb eine korrekte Lösung präsentieren können.

      Denkbar schlechte Voraussetzung.

      Das ist wahr, aber ich habe ja erklärt wie es zu dieser Situation kam :)

      1. Hallo,

        Aus deinen Recherchen hätte sich ergeben sollen, dass „das bedeutendste Konzept hinter mod_rewrite“ das ist, „wann man dies vermeiden sollte einzusetzen“. [When not to use mod_rewrite]

        Dort findest du gleich ganz oben auch die Alternative, die für dich infrage kommen sollte.

        Tjoa, da habe ich wohl schlecht gesucht. Ja, das allererste Beispiel scheint ja genau das zu sein was ich suche, das Beispiel ist ja

        Redirect "/one/" "http://one.example.com/"
        

        und angepasst auf meinen Fall wäre das wohl

        Redirect "/downloads/" "https://cdn.podseed.org/explikator/"
        

        Oder (wenn ich etwas weiter lese) wäre das hier vielleicht sogar noch eleganter:

        RedirectMatch 301 "/downloads/(mr_\w+\.mp3)$" "https://cdn.podseed.org/explikator/$1"
        

        Oder doch besser RedirectPermanent, wenn die Namen der Ressourcen, um die es geht, bekannt sind.
        Immer so wenig Regular Expressions wie möglich einsetzen. Die kosten auch Kraft und Zeit.

        Oder noch besser gleich die komplette Domaindelegation per DNS ändern auf den neuen Host. Aber Du hast ja die Domain geändert?

        Viel Erfolg
        localhort

        1. Hey

          Oder doch besser RedirectPermanent, wenn die Namen der Ressourcen, um die es geht, bekannt sind.
          Immer so wenig Regular Expressions wie möglich einsetzen. Die kosten auch Kraft und Zeit.

          Also äh ja die sind im Grunde schon "bekannt" aber dann müsste ich jetzt erst einen Scraper schreiben, der die Dateinamen aus der Webseite pult (im RSS-Feed stehen nur die letzten 50). Also sind die Dateinamen eher nicht bekannt.

          Oder noch besser gleich die komplette Domaindelegation per DNS ändern auf den neuen Host. Aber Du hast ja die Domain geändert?

          Nee ich glaube das hast du missverstanden, nur die Mediendateien wurden auf ein CDN verschoben, nicht die ganze Webseite… oder ich habe hier deinen Advice falsch verstanden.