为什么$ 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是​​否对我从来不知道的反向引用做出假设? 为什么他的重写规则(最重要的)工作?

事实certificate, $1在这里真的没有做任何事情。 以下工作也是如此:

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

(重写部分根本没有反引用。)

这是因为Yii正在查看$_SERVER['REQUEST_URI']来确定用户的意图。 事实上,Apache正在为预期的$1反向引用传递空白。

所以这里没有服务器故障。 🙂

尝试设置RewriteLog和RewriteLogLevel 。 日志可能会给你一个关于价值从何而来的暗示。