Robert B.: Content-Disposition: attachment via Querystring korrekt setzen

Hallo Forum,

ich versuche mich gerade daran eine simple Download-Option per Apache-Konfiguration zu setzen. Die Idee ist, dass mit dem Anhängen des Querystrings get ein entsprechender Content-Disposition HTTP-Header gesetzt wird. Das ganze soll in der lokalen .htaccess notiert werden. Bislang habe ich

<If "%{QUERY_STRING} =~ /get/">
Header set Content-Disposition "expr=attachment; filename=%{REQUEST_URI}"
</If>

Das hat allerdings den Schönheitsfehler, dass das filename-Attribut den kompletten Request-URI enthält – im Firefox sind die Schrägstriche durch Unterstriche ersetzt, d.h. aus

https://example.org/directory/file?get

wird der vorgeschlagene Dateiname

_directory_file

Gibt es irgend eine Möglichkeit hier

  • einen regulären Ausdruck
  • einen Substring
  • eine „basename“-Funktion

zu nutzen?

Viele Grüße
Robert

  1. Moin,

    das …

    <If "%{QUERY_STRING} =~ /get/">
    Header set Content-Disposition "expr=attachment; filename=%{REQUEST_URI}"
    </If>
    

    … war mal wieder ein Beispiel von „Overengineering“ nach nicht vollständigem Lesen und Verstehen des RFCs:

    filename ist ein optionaler Parameter hier. Wenn dieser fehlt, wird automatisch der Basename der Ressource vorgeschlagen. Das Problem ist also viel einfacher zu lösen:

    <If "%{QUERY_STRING} =~ /get/">
    Header set Content-Disposition "attachment"
    </If>
    

    Viele Grüße
    Robert