我正在将一个网站从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
?)但完全是空白。
我确定你已经知道应该使用前端服务器(如Nginx)来提供静态/媒体文件,因为它已在文档中的很多地方被提及过。
那么,如果Django不提供文件,为什么它需要MEDIA_ROOT
和MEDIA_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>
,它将提供文件。