我遇到问题,我想重写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
或条件可以起作用?
1条答案
按热度按时间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执行以下操作(指令的顺序可能很重要):这会忽略所有其他URL参数,只寻找
k
URL参数。此参数可以出现在查询字串中的任何位置。([\da-f]+)
-这个正则表达式匹配k
URL参数的值,它看起来像一个十六进制字符串。在你的例子中,它是40个字符长-如果它总是40个字符长,那么它也可以在正则表达式中被限制。例如([\da-f]{40})
-只匹配40个字符长的十六进制字符串。您也可以选择在重写要求 * 之前 * 测试目的URL是否以档案形式存在。例如,在第一个之后新增下列 condition(
RewriteCond
指示词):