Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Apache mod_rewrite正则表达式中多个匹配的多个反向引用_Regex_Apache_.htaccess_Mod Rewrite_Recursion - Fatal编程技术网

Regex Apache mod_rewrite正则表达式中多个匹配的多个反向引用

Regex Apache mod_rewrite正则表达式中多个匹配的多个反向引用,regex,apache,.htaccess,mod-rewrite,recursion,Regex,Apache,.htaccess,Mod Rewrite,Recursion,我需要知道是否有可能,在mod_重写中使用正则表达式来匹配某个序列的不可预测次数,并使用对每个序列的反向引用来访问匹配 一个示例可以使用多个词: 要匹配的序列: 0102030405 (序列长度=n*2,其中n可以是大于或等于1的数字) 正则表达式: ([0-9][0-9]+) 我需要能够获得序列中的n个匹配项中的每一个,以便在mod_重写规则中使用它们,该规则将给出以下翻译: /01.html=>/01/index.html /0102.html=>/01/02/index.html /010

我需要知道是否有可能,在mod_重写中使用正则表达式来匹配某个序列的不可预测次数,并使用对每个序列的反向引用来访问匹配

一个示例可以使用多个词:

要匹配的序列:

0102030405

(序列长度=n*2,其中n可以是大于或等于1的数字)

正则表达式:

([0-9][0-9]+)

我需要能够获得序列中的n个匹配项中的每一个,以便在mod_重写规则中使用它们,该规则将给出以下翻译:

/01.html=>/01/index.html

/0102.html=>/01/02/index.html

/010203.html=>/01/02/03/index.html

/01020304.html=>/01/02/03/04/index.html


有可能得到这个吗?

您可以使用以下两条规则:

RewriteRule ^(.+?/)?([0-9]{2})\.html$ /$1$2/index.html [L]

RewriteRule ^(.+?/)?([0-9]{2})([0-9]+.+?\.html)$ /$1$2/$3 [L]

不起作用。显然,它没有处理这种情况:/010203.html=>/01/02/03/index.html,上面的规则已经就位
/010203.html
在内部被重写为
/01/02/03/index.html
,这正是您在问题中所写的。很可能您有一些相互冲突的规则。如果您想要重定向,那么在第一条规则中添加
R
标记为:
RewriteRule^(+?/)?([0-9]{2})\.html$/$1$2/index.html[L,R]