2016-08-31 4 views
1

У меня на снимках моего сервера со случайными именами (f.e. "8a4f5d61.jpg"), и мне нужно изменить имя этих файлов с помощью заданного аргумента GET.

Так что, если у меня есть такой URL:

http://my.server/8a4f5d61.jpg?attachement=custom_name.jpg

и я хочу Apache, чтобы добавить заголовок, как это:

Заголовок Content-Disposition: «прикрепленного, имя файла = $ _GET ['присоединение'] "

, поэтому пользователь загрузит этот файл, уже переименованный в «custom_name.jpg».

Я понятия не имею, как получить этот GET аргумент внутри .htaccess


На Nginx это очень легко, вот мой рабочий Nginx конфигурации:

location ~ ^/.*\.jpg$ { 
    if ($arg_inline) { 
     add_header Content-Disposition "inline; filename=$arg_inline"; 
    } 
    if ($arg_attachement) { 
     add_header Content-Disposition "attachement; filename=$arg_attachement"; 
    } 
} 

Является ли это достижимо на Apache с .htaccess?

ответ

2

Я не проверял, но теоретически, установить переменную окружения, если ваш запрос соответствует заданным критериям, а затем используйте mod_headers' Header директиву, чтобы установить заголовок:

RewriteEngine On 

RewriteCond %{QUERY_STRING} ^attachment=(.+)$ [NC] 
RewriteRule^- [E=file_name:%1,L] 

Header always set Content-Disposition "attachement; filename=%{file_name}e" env=file_name 

где %{file_name}e является значением среды для file_name.

+0

Это должно быть '[E = имя_файла:% 1, L]' (PLZ исправить сообщение), и он работает очень приятно :) Спасибо! – GreggD

+0

@ a6r Исправлено, спасибо! Я ожидал по крайней мере одной ошибки в коде: P Рад узнать, что он работает. :) – hjpotter92

+1

Забыл упомянуть, что мне также нужно было удалить 'env = file_name', возможно, связанную с сервером вещь ... – GreggD