将两个MEDIA_URL映射到相同的MEDIA_ROOT

问题描述 投票:0回答:1

我正在将一个网站从WordPress迁移到Django / Wagtail。我在我的media目录中拥有所有旧的WP内容,并且它们都得到了适当的服务。

为了在内容中硬编码的旧媒体URL,将其他URL(特别是/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?)但完全是空白。

django media wagtail
1个回答
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>,它将提供文件。

© www.soinside.com 2019 - 2024. All rights reserved.