.htaccess掩码/遮盖图像源URL

hwamh0ep  于 2022-12-27  发布在  其他
关注(0)|答案(1)|浏览(130)

我希望你能帮助我。
我想屏蔽来自另一个域(不在我的服务器上)的URL时遇到问题

<img src="https://images2.externaldomain.com/?w=200&amp;h=200&amp;bg=white&amp;trim=5&amp;t=letterbox&amp;url=ssl%3Ai.otto.de%2Fi%2Fotto%2F60393181-9d98-5221-b0ab-35d38cd2aee2.jpg%3F%24Preset_Retargeting_640%24&amp;feedId=62797&amp;k=bd10410eeddf3ad8980f6e543edf4455110cb164">

到掩码URL,如

<img src="https://mysubdomain.mydomain.com/productimages/bd10410eeddf3ad8980f6e543edf4455110cb164.jpg">

图像ID应为k=末尾的ID
问题是我需要一个通配符解决方案,因为我有很多图片都有这样的网址,只有https://images2.theotherdomain.com是稳定的,每个图片在源网址中都有一个ID(k=)。
哪个RewriteRule或条件可以工作?
感谢每一个提示
我添加到我的.htaccess的片段没有影响我的html.图片的来源看起来完全一样.我怎么能掩盖他们,它看起来像我的服务器的图片来源?
MrWhite的提示很棒,它在X1 E0 F1 X上工作,但在我的网站上不工作-我错了什么?

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{QUERY_STRING} (?:^|&)k=([\da-f]+)
 RewriteRule ^$ productimages/%1.jpg [QSD,L]
</IfModule>

我的图像看起来像:

<img src="https://images2.externaldomain.com/?w=200&amp;h=200&amp;bg=white&amp;trim=5&amp;t=letterbox&amp;url=ssl%3Ai.otto.de%2Fi%2Fotto%2F60393181-9d98-5221-b0ab-35d38cd2aee2.jpg%3F%24Preset_Retargeting_640%24&amp;feedId=62797&amp;k=bd10410eeddf3ad8980f6e543edf4455110cb164">

<img src="https://images2.externaldomain.com/?w=200&amp;h=200&amp;bg=white&amp;trim=5&amp;t=letterbox&amp;url=ssl%3Ai.otto.de%2Fi%2Fotto%2F06a05fc1-0554-5463-a8cf-6092a79214f0.jpg%3F%24Preset_Retargeting_640%24&amp;feedId=56149&amp;k=d27dd6627f26f5350af6afcec2c2afd71500c218">

在HTML代码中。图像在另一个服务器上是外部的。
我想用htts://www.example.com来掩盖它们mysubdomain.mydomain.com/productimages/d27dd6627f26f5350af6afcec2c2afd71500c218.jpg

5n0oy7gb

5n0oy7gb1#

要内部重写表单的URL:
第一个月

/folder/4c8370f2e926de654b1f0a08530bc6065e6a80d3.jpg
换句话说,捕获最初请求的URL中k URL参数的值,并将其用作要重写到的URL中的文件基名,然后可以在根.htaccess文件顶部附近使用mod_rewrite执行类似以下的操作(指令的顺序可能很重要):

RewriteEngine On

RewriteCond %{QUERY_STRING} (?:^|&)k=([\da-f]+)
RewriteRule ^$ folder/%1.jpg [QSD,L]

这将忽略所有其他URL参数,只查找k URL参数。此参数可以出现在查询字符串中的任何位置。
([\da-f]+)-此正则表达式匹配k URL参数的值,该参数看起来像十六进制字符串。在您的示例中,该参数的长度为40个字符-如果它始终为40个字符,则也可以在正则表达式中对其进行限制。例如([\da-f]{40})-仅匹配长度为40个字符的十六进制字符串。
您还可以在重写请求 * 之前 * 测试目标URL是否以文件形式存在。例如,在第一个URL之后添加以下 conditionRewriteCond指令):

:
RewriteCond %{DOCUMENT_ROOT}/folder/%1.jpg -f
:

相关问题