gpt4 book ai didi

Apache 重写规则 : Is the pattern "." a special case?

转载 作者:行者123 更新时间:2023-12-04 06:37:19 26 4
gpt4 key购买 nike

我已经看到了许多 RewriteRule 示例,如下所示:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

此处的意图是,不受真实文件支持的 URI 将由 CMS 处理,并通过/index.php 连接到其中。例如,WordPress 在其 standard(?) .htaccess file 中使用了这种技术。 .

但是,正则表达式没有任何意义。没有讨论匹配的主题字符串(但请参阅官方 Apache RewriteRule 文档中的“匹配的内容?”),正则表达式 .应该只匹配 第一个字符 !但是,它的行为与 .* 相同。 ,即匹配 整个主题字符串。设置 RewriteLogLevel 5 , 我得到相同的结果和日志条目 ..* .

我只能得出结论,具有模式 . 的 RewriteRule是特殊情况并匹配整个字符串(a la .*),而不是通过 RegExp 引擎按原样处理。但是,我还没有在任何地方看到这个记录。文档是否有缺陷,或者我只是完全遗漏了什么?

谢谢!

最佳答案

哦,呃......我讨厌当我意识到我只是跛脚。

我正在从程序员的心态接近 mod-rewrite。在我知道的每个正则表达式库中,替换仅替换主题字符串的匹配部分。所以例如

$ perl
$hello = "hello";
$hello =~ s/lo/p/;
print "$hello\n";
^D

显示器
help

然而,在 mod-rewrite 中,我们不会操作字符串。如果 URI 完全匹配,我们将其完全替换为 Substitution。因此,仅仅匹配(“.”)就足以用/index.php 替换整个字符串。

Apache docs有点陈述这一点,但不要强硬到纠正那些在错误的顶空的人:

The Substitution of a rewrite rule is the string that replaces the original URL-path that was matched by Pattern.

关于Apache 重写规则 : Is the pattern "." a special case?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4705012/

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