RFZ: Apache: ForceType abhängig von Env möglich?

Nabend,
ich würde gern via .htaccess abhängig von einer env Variable den Content-Type von Dateien setzen.

Header set Content-Type "application/octet-stream" env=forcedownload

Funktioniert nicht, da vermutlich der Mime-Type später ausgewertet wird...

ForceType application/octet-stream

Bringt mir das gewünschte Ergebnis, lässt sich aber nicht abhängig von einer Umgebungsvariable ausführen :/
Direktiven wie FilesMatch kann ich nicht verwenden, der Content-Type soll für die selbe Datei unterschiedlich gewählt werden können.

Ziel des ganzen ist es, die selbe Datei abhängig von der URI (zwei verschiedene URIs führen mit mod_rewrite auf die selbe Datei) einmal als Download zu erzwingen, und ein andermal dem Browser die Auswertung des ContentTypes zu überlassen.
Mir fällt da leider nichts anderes ein, als mit
SetEnvIf RequestURI /fdl/ forcedownload
die Variable zu setzen...

Das ganze soll auch mit Standard-Modulen auskommen, da ich keinen Zugriff auf die Konfiguration des Apache hab.
Hier würd ich mir glatt eine <IfEnv> Direktive wünschen :)

Jemand eine Idee?

  1. hi,

    Ziel des ganzen ist es, die selbe Datei abhängig von der URI (zwei verschiedene URIs führen mit mod_rewrite auf die selbe Datei) einmal als Download zu erzwingen, und ein andermal dem Browser die Auswertung des ContentTypes zu überlassen.
    Mir fällt da leider nichts anderes ein, als mit
    SetEnvIf RequestURI /fdl/ forcedownload
    die Variable zu setzen...

    Wenn du schon mod_rewrite nutzt - dann force den type doch gleich damit (hach, i love denglisch).

    Nutze das Flag type bzw. T.
    http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteRule

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Nutze das Flag type bzw. T.
      http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteRule

      Danke für den Tipp, auf dieses Flag bin ich zwar ebenfalls gestoßen, aber es klappt nicht...

      Options +Indexes +FollowSymlinks
      RewriteEngine On
      RewriteBase /download/htaccess
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)/forcedl/(.*)$ $1/$2 [E=FDL:1,L,T="application/octet-stream"]
      Header set Content-Disposition "attachment;" env=REDIRECT_FDL

      Beim Aufruf von "/download/htaccess/images/forcedl/2104.jpg" wird zwar das richtige Bild ausgegeben und auch der Content-Disposition Header gesetzt, der Content-Type bleibt aber unverändert (hier image/jpeg). Hab auch single-Quotes und ohne versucht, der Content-Type wird nicht geändert.

      Zwischenzeitlich befand ich den Content-Disposition Header für eine gute Idee, man kann zwar mit htaccess alleine nicht filename="" angeben, IE und FF erzwingen dann aber trotzdem den Download und verwenden den Namen aus der URL. Leider weigert sich aber Opera ohne filename einen Download zu starten. Daher wär der geänderte Content-Type zwar die unschönere, aber sicherere Methode (jetzt mal von einem PHP Script abgesehn).

      Frage am Rande, wieso setzt E=FDL die Variable REDIRECT_FDL? Hab dazu in der Doku nix gesehn, hat mich anfangs einige Nerven gekostet ;)

      greetz RFZ