Apache2 symlink — как использовать целевое имя и тип MIME

Apache2 symlink — как использовать целевое имя и тип MIME

Я только что настроил сервер Apache2, и он отлично работает. Поскольку цель этого сервера — просто обслуживать версионные файлы, я создал latestсимволическую ссылку, которая указывает нанапример myfile_v1.1.0.ext.

Проблема в том, что когда я захожу по URL-адресу http://localhost/latest, в окне загрузки отображается latestимя файла и application/octet-streamтип MIME.

Мне бы хотелось, чтобы при доступе к этому же URL-адресу он отображался myfile_v1.1.0.extкак имя файла и application/my-appкак тип MIME.

Есть ли способ этого добиться?

Спасибо заранее

решение1

Один из способов сделать это — использовать псевдоним в конфигурации Apache. Недостаток в том, что вам придется обновлять его каждый раз, когда будет релиз, но преимущество в том, что вы можете иметь большую степень контроля над тем, как обрабатывается файл.

Вот как это можно сделать:

  1. Отредактируйте файл Apache .confдля сайта
  2. Добавьте это в <VirtualHost>раздел:
    Alias "/download" "/path/to/releases/myfile_v1.1.0.ext"
    <Directory "/path/to/releases">
            Options FollowSymLinks
            AllowOverride All
    
            <FilesMatch "\.(ext|zip)$">
                    Header set Cache-Control "max-age=1209600, public"
                    ForceType application/tar+gzip
            </FilesMatch>
    </Directory>
    
    Примечание:Обязательно замените application/tar+gzipна правильный тип содержимого файла.
  3. Сохраните файл и перезапустите Apache:
    sudo service apache2 restart
    
    Примечание:Не стесняйтесь переключаться restartс помощью reload.
  4. Проверьте URL, посетивyour.site/download

Это было протестировано на Ubuntu Server 20.04.3 LTS с Apache 2.4.41.

решение2

Решение — просто добавить Redirectдирективу в файл конфигурации Apache для вашего веб-сайта.

Redirect "/latest" "files/myfile_v1.1.0.ext"

Связанный контент