htaccess - 包含特定字符串部分的重定向字符串

时间:2016-09-01 09:12:30

标签: regex .htaccess url-rewriting

更新 - 我最初的问题不太正确。 (向有关各方道歉)

再次更新 - (今天不是我今天......)

我需要重定向所有传入的图像请求:

http://www.example.com/images/asd12catalog.jpg (there is an additional alpha character)

要:

http://www.example.com/images/as-d12.jpg  (I have added the "-")

所以我需要删除单词目录并更改文件名的第一部分以添加“ - ”制作as-d12.jpg。

我尝试过各种变体:

RewriteRule ^/images/[a-z0-9]catalog.jpg$ /images/$1.jpg

但我似乎无法得到匹配。

有人可以帮忙吗?

感谢。

2 个答案:

答案 0 :(得分:3)

您的尝试非常接近,唯一的主要问题是您实际上没有将正则表达式中的任何内容包装为 capture 组。通过在下面[a-zA-Z]*[0-9]*附近放置括号,匹配完成后,它将在变量$1中可用。然后,您可以按照预期在重定向网址中使用此功能。

RewriteRule ^/images/([a-zA-Z]{2})([a-zA-Z]{1})([0-9]*)catalog.jpg$ /images/$1-$2$3.jpg

<强>演示:

Regex101

答案 1 :(得分:1)

RewriteRule ^/?images/([a-zA-Z]{2})([a-zA-Z]{1})([0-9]+)catalog.jpg$ /images/$1-$2$3.jpg

您并不具体说明文件名的确切格式,但这会匹配catalog.jpg后面的任何内容,这有望满足任何要求。

另请注意,在重写规则中匹配时,前导/最多应该是可选的 - 从版本1开始,它们不会成为RewriteRule解析路径的一部分。请参阅{{3 }}

编辑:再次更新新要求