将两个MEDIA_URL映射到相同的MEDIA_ROOT

时间:2017-12-28 18:43:16

标签: django media wagtail

我正在将一个网站从WordPress迁移到Django / Wagtail。我的media目录中包含了所有旧的WP内容。这一切都得到了适当的服务。

为了在内容中硬编码的旧媒体网址,将其他网址(特别是/wp-content/)映射到MEDIA_ROOT会很方便。

例如,//example.com/media/uploads/2017/12/IMG_2120.jpg现在提供的已迁移资产也可以从//example.com/wp-content/uploads/2017/12/IMG_2120.jpg提供

我确信有一些明显的方法可以做到这一点(在urls.py中?)但完全是空白。

1 个答案:

答案 0 :(得分:3)

我确信你已经知道应该使用前端服务器(如Nginx)提供静态/媒体文件,因为它已在文档中的很多地方被提及过。

那么,如果Django不提供文件,为什么需要MEDIA_ROOTMEDIA_URL设置?

MEDIA_ROOT是Django存储您上传的图像/文件的地方。

Django使用

MEDIA_URL生成文件URL。例如,如果MEDIA_URL = '/media/',那么如果你执行{{ image.url }},Django会生成这样的网址 - /media/image.jpg

但Django不提供文件。你的前端服务器。所以,你要做的是,你像这样配置你的前端服务器:

if request path starts with /media/:
    map it to <media directory>

基本上,您告诉您的前端服务器为<media directory>的每个请求提供来自/media/的内容。这样,以/media/开头的请求实际上从未到达您的Django应用程序,因为您的服务器正在处理它们。

我的意思是你可以配置你的前端服务器将/wp-content/uploads/映射到你的<media directory>,它将提供文件。