mod_rewrite RewriteRule反向引用在模式中使用

时间:2013-07-26 15:30:33

标签: .htaccess mod-rewrite backreference

是否可以在RewriteRule 模式的中间使用反向引用?

我设想这样:

RewriteRule  ^(.)([a-z]*)$1([a-z]*)  $2-$3
                          ^
     (note, this fellow, here, refers to that first "(.)")

如果收到的网址为XboopXdoop,则结果当然为boop-doop

我正在尝试使用它来指定传入URL开头的分隔符,该分隔符可用于解析字符串的其余部分,而不强制使用特定字符作为分隔符。

谢谢。

1 个答案:

答案 0 :(得分:3)

$1适用于右侧(重写),但不适用于正则表达式。您需要使用\1

尝试:

RewriteRule ^(.)([a-z]+)\1([a-z]+) $2-$3

我遇到了一个奇怪的边缘情况,*根据字符串的第二个字符分割,而不是第二个字符。 XtestingXtest导致es-ing ...所以是的,不知道那里发生了什么。如果我使用+它可以正常工作。

此外,由于*+是贪婪的,如果你有多个分隔符,它将在最后一次出现的字符上分开:

XbaseXtest  -> base-test 
XbaseXteXst -> baseXte-st
XbaseXtestX -> baseXtest-