【问题标题】:mod_rewrite RewriteRule backreference use in patternmod_rewrite RewriteRule 反向引用在模式中的使用
【发布时间】:2013-07-26 15:30:33
【问题描述】:

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

我的设想是这样的:

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

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

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

谢谢。

【问题讨论】:

    标签: .htaccess mod-rewrite backreference


    【解决方案1】:

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

    试试:

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

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

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

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

    【讨论】:

    • 太棒了!正是我想要的。非常感谢你!有一个网站在外部脚本源中包含查询字符串时变得很挑剔,所以提供了,比如说,.../_X_pageXfield=val,其中^_(.)(.*)\1(.*)$ 是模式,$2?$3 是它的结果,设法解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 2020-02-17
    • 1970-01-01
    相关资源
    最近更新 更多