假设应使用网址\xy12345.jpg
我们有一个图像文件的目录结构,如下所示:
images/x/y/xy12345/file
其中x
是文件名的第一个字符,y
是第二个字符。
我需要.htaccess
文件的RewriteRule,并以:
RewriteRule ^([A-Za-z0-9-]+).jpg images/x/y/$1/file
我认为$1
对于文件名是正确的,但不知道对x
和y
使用什么(第一个和第二个字符)。
如果我知道第一个应该是'x',那么它将是^x
,但它可以是任何A-Za-z0-9-
。那么取代x
和y
的是什么?或者更一般地说,如何在不必匹配特定字符的情况下获得第一个和第二个字符?
答案 0 :(得分:1)
您可以使用这样的嵌套捕获组:
RewriteRule (([A-Za-z0-9-])([A-Za-z0-9-])[A-Za-z0-9-]+).jpg$ images/$2/$3/$1/file
$2
和$3
分别捕获 - 前两个字符,而$1
仍然捕获整个文件名(包括x
和y
)。
查看演示here。
答案 1 :(得分:0)
我认为你在使用\ 1和捕获的正确轨道上。这对你有用吗?
RewriteRule ^([a-zA-Z0-9])([a-zA-Z0-9])(.*) images/$1/$2/$3/file
我在Python中有一个小例子可以运行:
text = "xy12345.jpg"
newtext = re.sub(r"([a-zA-Z0-9])([a-zA-Z0-9])(.*)", r"images/\1/\2/\3", text)
print (newtext)
>> images/x/y/12345.jpg
几乎只需要捕获更多你作为一个字符类写出的内容,然后将其重新输入。这将匹配该范围内的一个字符[a-zA-Z0-9]。我们可以调整最后一个(。*),具体取决于你是否需要.jpg部分。