Я управляю примерно дюжиной сайтов Django на одном сервере, и вот как я настраиваю медиа-URL.
Каждый VirtualHost имеет следующую конфигурацию:
Alias /media /path/to/media/
<Directory /path/to/media>
Include /etc/apache2/vhosts.d/media.include
</Directory>
Таким образом, я могу вносить любые изменения в обработку мультимедиа в одном файле.
Тогда мой файл media.include выглядит следующим образом:
Order allow,deny
Allow from all
SetHandler None
FileETag none
Options FollowSymLinks
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 30 days"
ExpiresByType image/jpg "access plus 30 days"
ExpiresByType image/png "access plus 30 days"
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType text/css "access plus 30 days"
ExpiresByType application/x-javascript "modification plus 2 years"
</IfModule>
<IfModule mod_headers.c>
Header append Vary Accept-Encoding
</IfModule>
AddOutputFilterByType DEFLATE text/html text/css text/plain
Это сработало очень хорошо для меня и получает A оценку от YSlow (также см. Джефф Этвуд на YSlow ).
Также обратите внимание, что для корневого каталога я использую следующую конфигурацию:
WSGIScriptAlias / /path/to/app.wsgi
<Directory /path/to>
Options +ExecCGI
Allow from all
</Directory>
... который должен быть после псевдонима / носителя в вашем файле конфигурации (потому что Apache просматривает псевдонимы по порядку)