htaccess 重写复杂的图像子文件夹以纠正图像

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

如何将旧服务器中这么复杂的图片文件夹(每张图片都不一样!)转发到新服务器并统计图片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)以便我可以正确转发它?

谢谢你!

.htaccess subdirectory
1个回答
0
投票

从评论中我了解到您只是问如何重写这样的请求。 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
指令启用了对该位置的此类规则的解释。
    

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