如果网址以特定代码段结尾,请添加响应标头

时间:2016-05-22 13:40:10

标签: php wordpress apache .htaccess

如果网址以Content-disposition "attachment"结尾,我想在回复中发送mp3?dl标题。

我想在.htaccess中执行此操作。

我试过了:

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

有一个WordPress网站在.htaccess中添加了一些其他内容。如果我在文件末尾添加上面的代码段,则不会进行任何更改。如果它放在文件的顶部,则整个网站以服务器错误结束(500)。

要检查标头是否已添加,请使用curl

$ 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

我如何在.htaccess中执行此操作?

2 个答案:

答案 0 :(得分:1)

FilesMatch适用于文件,无法与查询字符串(Could not find any version that matches com.android.support:support-v4:+ )匹配。

要检查查询字符串,通常将RewriteCond?dl一起使用,但无法使用mod_rewrite,AFAIK设置标头。

您可以在QUERY_STRING内尝试If并检查您想要的查询字符串,例如

FilesMatch

答案 1 :(得分:-1)

FilesMatch Directive接受正则表达式作为参数,因此您需要转义.?,同时添加.+匹配任何文件名,即:

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

根据您的评论,您需要将\?更改为\|

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