我大约有200个包含pdf和docs的文件夹。它们都应重定向到同一目录中的子文件夹。在同一目录中也有不应包含的文件夹和文件。
所有文件夹都具有相同的名称结构(带有-或_的123名称名称),与BBEdit中的GREP匹配以下内容:
(\d{3}(_|-).+)
所以我尝试了类似的方法:
RedirectMatch 302 ^/([\d{3}(_|-).+)]/(.*)/?$ /subfolder/$2
与我要重定向的文件夹放在同一文件夹中。
我不知道如何正确设置比赛。
应在example.com/images/subfolder/123-name-name/somefile.pdf中找到类似example.com/images/123-name-name/somefile.pdf(或doc,docx)的URL
但是上面的代码会导致内部服务器错误。
如果有人可以帮助我,那就太好了。
答案 0 :(得分:1)
您可以使用:
^(.*?\/\d{3}(?:-|_)\w+(?:-|_)\w+\/)(.*)$
捕获捕获组中URL的两个部分,并替换为$1kunden/$2
,因此您的行将如下所示:
RedirectMatch 302 ^(.*?\/\d{3}(?:-|_)\w+(?:-|_)\w+\/)(.*)$ $1kunden/$2
这将在其余网址和文件名之间插入kunden/
。
如果要指定文件名必须具有扩展名(即,至少包含1个.
),则可以将正则表达式替换为:
^(.*?\/\d{3}(?:-|_)\w+(?:-|_)\w+\/)(.*?\..*?)$
编辑,不好的是,为防止递归,您可以使用负数预读来确保子文件夹在路径中不存在:
RedirectMatch 302 ^((?!.*subfolder\/).*?\/)(\d{3}(?:-|_)\w+(?:-|_)\w+\/)(.*)$ $1subfolder/$2$3
这将防止已经包含subfolder/
的网址再次重定向。