gpt4 book ai didi

regex - RewriteCond 中双冒号的作用是什么?

转载 作者:行者123 更新时间:2023-12-02 22:40:27 25 4
gpt4 key购买 nike

示例:

RewriteCond %{REQUEST_URI}::$1 ^(.*?)/?(.*)::\2$

看起来这个操作符在任何引用或手册中都找不到。我在哪里可以找到它,或者有人可以解释一下这个运算符(operator)的作用吗?

最佳答案

这样的规则:

RewriteCond %{REQUEST_URI}::$1 ^(.*?/)(.*)::\2$
RewriteRule ^(.*)$ - [E=BASE:%1]

也可以写成(使用 ## 作为条件两侧的固定分隔符):

RewriteCond %{REQUEST_URI}##$1 ^(.*?/)(.*)##\2$
RewriteRule ^(.*)$ - [E=BASE:%1]

说明:

  • 您可以使用$1捕获自RewriteRule在你的RewriteCond因为mod_rewrite实际上向后处理规则集。它以 RewriteRule 中的模式开始。 ,如果匹配,则继续检查一个或多个 RewriteCond .
  • 正如您在 RewriteCond 中看到的那样,LHS(左侧/测试字符串)可以使用反向引用变量,例如$1 , $2%1 , %2等,但 RHS(右侧)即条件字符串不能使用这些 $1 , $2%1 , %2变量。
  • 在 RHS 条件部分内,我们只能使用内部反向引用,即我们在此条件本身中捕获的组。它们由 \1 表示。 , \2等等
  • 在您的RewriteCond中第一个捕获的组是 (.*?/) 。它将由内部反向引用 \1 表示.
  • 正如您所指出的,这条规则基本上是寻找 RewriteBase通过比较%{REQUEST_URI}动态$1%{REQUEST_URI} 的示例将是/directory/foobar.php$1 的示例对于同一示例,URI 将为 foobar.php^(.*?/)::(.*)\1$将差异放入第一个捕获组 %1\1 。此处将填充 %1\1值为 /directory/稍后在设置环境变量 %{ENV:BASE} 时使用即E=BASE:%1 .

关于regex - RewriteCond 中双冒号的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37605218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com