case
我们有2个网站,每个网站都有不同的URL结构:
-
www.domain1.com/category/sub-category/
post-id
/slug
-
www.domain2.net/category/sub-category/
yyyy/mm/dd
/slug
每个网站都有一个单独的CMS(基于Java),一个单独的数据库(Postgres)和单独的存储(Amazon S3)。
计划
我们将拥有一个多站点CMS(WordPress),该CMS(WordPress)为以前的两个网站提供服务,其中一个数据库(MySQL)和一个存储空间。所有这些都已完成,我们处于最后阶段:迁移已从旧数据库完成到一个新的WordPress数据库,Amazone存储桶已将其合并为一个新的存储桶,多站点功能正常。
。问题
我们想采用第二个网站的URL结构并将其用于两个网站,因此所有新的URL都将具有此结构:
-
www.domain1.com/category/sub-category/
yyyy/mm/dd
/slug
-
www.domain2.net/category/sub-category/
yyyy/mm/dd
/slug
我们关注的是第一个网站的旧URL,该网站已经在社交媒体上共享并由其他网站使用,如何将旧结构URL重定向到新结构,无法获得yyyy
,mm
或dd
来自旧URL,我们需要使用帖子的旧ID来查询数据库。
想法
我有一个想法,我们可以使用2列创建一个表(可能是Amazon DynamodB表或Redis):legacy-id
和new-url
,因此我将根据传统ID进行预先填充新的URL,以防止超载超载具有许多查询的数据库以获取新的URL。
但是,是否有一种将NGINX与此表链接的方法,因此Nginx将从旧的URL中提取post-id
并使用该表以基于提取的post-id
获取new-url
。
对这个人有任何帮助吗?
我认为使用嵌入式lua可以根据redis中的数据进行动态重写。
检查以下两个链接:LUA模块,Lua Redis驱动程序
另一个解决方案是使用您选择的语言编写重定向逻辑,并使用该语言的某些Web服务器编写逻辑,然后使用Proxy_pass Ngass指令将您的请求代理到该网络服务器。