如何将旧服务器中这么复杂的图片文件夹(每张图片都不一样!)转发到新服务器并统计图片url?
旧服务器上始终保持不变的是前 2-3 个文件夹:
/storage/images/image
和
/WebRoot/Site26/Sites/
这里完全(旧服务器)图片网址与 example.jpg 文件:
www.domain.com/storage/images/image?remote=https://domain/WebRoot/Site26/Sites/3242c7c4-9237-41d1-b0e1-5e618f6c276d/6595/224C/767D/9745/A7A7/0A48/3580/740D/
示例.jpg&site=3242c7c4-9237-41d1-b0e1-5e618f6c276d&width=600&height=2560
和新的服务器图片网址(非常友好!)
www.domain.com/pictures/product/1/
示例.jpg`
新网址是统计性的,所有图像都包含在那里。我的问题是,我如何首先识别文件夹“/storage/images/”,然后识别文件名(example.jpg)以便我可以正确转发它?
谢谢你!
从评论中我了解到您只是问如何重写这样的请求。 SO 上确实有“数千”个现有答案。但为了让这变得容易,您可以从以下一种方法开始: 作为内部重写
如果旧的和新的 URL 都由同一 http 服务器内的同一 http 主机接收:
RewriteEngine on
RewriteCond %{QUERY_STRING} (?:(^|&))remote=.+/([^/]+)(?:(&|$))
RewriteRule ^/?storage/images/image$ /pictures/product/1/%1 [L]
或者作为外部重定向,以防它们是单独的 http 主机:
RewriteEngine on
RewriteCond %{QUERY_STRING} (?:(^|&))remote=.+/([^/]+)(?:(&|$))
RewriteRule ^/?storage/images/image$ https://example.com/pictures/product/1/%1 [R=301,L]
这两个规则都可以在 http 主机的中央配置中实现(出于效率和降低复杂性的原因,最好是这样),或者,如果您无权访问该配置,则可以在distributed
配置文件中实现。此类文件(通常称为“.htaccess”)应放置在 http 主机中充当 DOCUMENT_ROOT
的文件夹中,并且必须可由 http 服务器进程读取。显然,您还需要注意重写模块实际上已加载到 http 服务器中,并且您通过
AllowOverride
指令启用了对该位置的此类规则的解释。