为什么 $1 反向引用在没有子组的重写中起作用?

为什么 $1 反向引用在没有子组的重写中起作用?

与我一起工作的某人向 SVN 提交了如下的 RewriteRule:

RewriteRule ^admin/ebay.*$ /yii.php/$1 [L]

我警告他,这可能行不通,因为匹配中没有与 $1 反向引用相对应的子组。它确实有效,我很困惑。我很确定他想要的是以下任一内容:

RewriteRule ^admin/ebay.*$ /yii.php/$0 [L] # $0 is whole match

...或者...

RewriteRule ^admin/ebay(.*)$ /yii.php/$1 [L] # $1 subgroup

Apache 是否对我从未了解过的反向引用做出了假设?为什么他的 RewriteRule(顶部的那个)有效?

答案1

$1事实证明,没有在这里可以做任何事情。下面的方法同样有效:

RewriteRule ^admin/ebay.*$ /yii.php [L]

(请注意,重写部分根本没有反向引用。)

这是因为 Yii 正在研究$_SERVER['REQUEST_URI']如何弄清用户想要做什么。事实上,Apache 只是$1按照预期为反向引用传递了空值。

因此这里没有服务器故障。:)

答案2

尝试设置重写日志重写日志级别。日志可能会提示您该值来自何处。

相关内容