2016-05-22 6 views
2

Ich möchte den Header Content-disposition "attachment" in der Antwort senden, wenn die URL mit mp3?dl endet.Fügen Sie den Antwortheader hinzu, wenn die URL mit einem bestimmten Snippet endet

Ich möchte das in .htaccess tun.

Ich habe versucht:

<FilesMatch ".mp3?dl$"> 
    Header set Content-disposition "attachment" 
</FilesMatch> 

Es gibt eine Wordpress-Seite, die in .htaccess einige andere Sachen hinzufügt. Wenn ich dieses Snippet oben am Ende der Datei hinzufüge, ändert es sich nicht. Wenn es am Anfang der Datei steht, endet die gesamte Website mit einem Serverfehler (500).

Um zu überprüfen, ob der Header I curl verwenden hinzugefügt:

$ curl -X HEAD -i 'http://example.com/files/audio/ping.mp3?dl' 

HTTP/1.1 200 OK 
Date: Sun, 22 May 2016 13:34:00 GMT 
Server: Apache 
Last-Modified: Sun, 22 May 2016 13:21:51 GMT 
ETag: "12a...2" 
Accept-Ranges: bytes 
Content-Length: 76385 
Content-Type: application/octet-stream 

curl: (18) transfer closed with 76385 bytes remaining to read 

Wie kann ich dies tun in .htaccess?

Antwort

1

FilesMatch gilt für Dateien und kann nicht mit einer Abfragezeichenfolge übereinstimmen (?dl).

Um nach einer Abfragezeichenfolge zu suchen, verwenden Sie normalerweise RewriteCond mit QUERY_STRING, aber es gibt keine Möglichkeit, eine Kopfzeile mit mod_rewrite, AFAIK, zu setzen.

Sie könnten versuchen If innerhalb FilesMatch und überprüfen Sie für die Abfrage Zeichenfolge, die Sie wünschen, z.

<FilesMatch "\.mp3$"> 
    <If %{QUERY_STRING} == "dl"> 
     Header set Content-disposition "attachment" 
    </If> 
</FilesMatch> 
-1

Die FilesMatch Directive akzeptiert eine regex als Argument, so dass Sie die . und ? zu entkommen brauchen werden, auch .+ fügen Sie alle Dateinamen übereinstimmen, das heißt:

<FilesMatch ".+\.mp3\?dl$"> 
    Header set Content-disposition "attachment" 
</FilesMatch> 

Basierend auf Ihre Kommentare Sie müssen \? zu \|

<FilesMatch ".+\.mp3\|dl$"> 
    Header set Content-disposition "attachment" 
</FilesMatch> 
ändern
+0

Danke, aber ich habe es schon versucht ... Es funktioniert nicht ... Ist es möglich, dass es wegen Wordpress oder so ist? –

+0

add '. + 'Am Anfang der Regex, überprüfen Sie das Update. –

+0

Ich habe das auch versucht, es funktioniert nicht. Ich schätze das Problem ist, wenn die URL übereinstimmt: wenn ich versuche, einen benutzerdefinierten Header ('X-Foo' zum Beispiel) für'. * 'Zu setzen, funktioniert das. –

Verwandte Themen