.htaccess - 模式中的 mod_rewrite RewriteRule 反向引用使用

标签 .htaccess mod-rewrite backreference

是否可以在 RewriteRule pattern 中间使用反向引用?

我是这样设想的:

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

如果接收到的 url 是 XboopXdoop,结果当然是 boop-doop

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

谢谢。

最佳答案

$1 在右侧起作用(重写),但在正则表达式中不起作用。您需要使用 \1

尝试:

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

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

此外,由于 *+ 是贪心的,如果您有多个分隔符,它将在最后一次出现该字符时拆分:

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

关于.htaccess - 模式中的 mod_rewrite RewriteRule 反向引用使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17885380/

相关文章:

apache - 配置 apache 将所有请求发送到 tomcat

apache - mod_rewrite 中的绝对文件路径 - 允许吗?

Python 正则表达式替换 : separate backreference from digit

regex - 捕获组的负前瞻

php_value 在 .htaccess 文件中不起作用

php - opencart 2.x 中产品页面的自定义 SEO URL

ubuntu - 启用 mod_rewrite ubuntu

java - 回顾中的反向引用

php - 如何屏蔽URL地址?

regex - 棘手的 htaccess 重定向使用子文件夹的通配符