.htaccess通配符重定向以重写URL

i7uaboj4  于 2022-11-25  发布在  其他
关注(0)|答案(1)|浏览(138)

我遇到问题,我想重写URL

https://subdomain.domain.example/?w=200&h=200&bg=white&trim=5&t=letterbox&url=ssl%3Ai.test.com%2Fi%test%2F37b3895d-f743-4572-9017-6725903fef30.jpg%3F%24Preset_Retargeting_640%24&feedId=62797&k=4c8370f2e926de654b1f0a08530bc6065e6a80d3

到URL,例如

https://mysubdomain.mydomain.example/folder/4c8370f2e926de654b1f0a08530bc6065e6a80d3.jpg

图像ID是k=结尾处的ID
问题是我需要一个通配符,因为我有很多这样的URL,只有https://subdomain.domain.example/是稳定的。
哪个RewriteRule或条件可以起作用?

6yoyoihd

6yoyoihd1#

要在内部重写表单的URL,请执行以下操作:
/?w=200&h=200&bg=white&trim=5&t=letterbox&url=ssl%3Ai.test.com%2Fi%test%2F37b3895d-f743-4572-9017-6725903fef30.jpg%3F%24Preset_Retargeting_640%24&feedId=62797&k=4c8370f2e926de654b1f0a08530bc6065e6a80d3

/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是否以档案形式存在。例如,在第一个之后新增下列 conditionRewriteCond指示词):

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

相关问题