gpt4 book ai didi

apache - mod_rewrite - RewriteCond - 为什么需要比较语法?

转载 作者:行者123 更新时间:2023-12-04 16:11:01 24 4
gpt4 key购买 nike

我这里有三个条件,但我找不到真正的区别,因为它们做同样的工作:

RewriteCond %{HTTPS} !=on

RewriteCond %{HTTPS} =off

RewriteCond %{HTTPS} off

本网站 ( http://httpd.apache.org/docs/current/mod/mod_rewrite.html ) 说:

Syntax: RewriteCond TestString CondPattern [flags]

CondPattern 通常是一个 perl 兼容的正则表达式,但还有额外的语法可用于对 Teststring 执行其他有用的测试:

如果条件本身具有与正则表达式进行比较的任务,为什么我需要额外的比较语法?

最佳答案

他们不做同样的工作。

直接RewriteCond假设条件表达式是一个正则表达式。

=!= 的语法执行简单的字符串比较。

结果与您的示例相同只是因为您使用的字符串没有正则表达式语法

对此的混淆会导致错误和安全问题。

例如,攻击者可以通过发送带有 wwwXexample.com 的“Host” header 来利用如下所示的条件:

RewriteCond %{HTTP_HOST} www.example.com [NC]

而如果主机是 www.example.com,下面的条件将匹配。

RewriteCond %{HTTP_HOST} =www.example.com [NC]

还有其他影响,最显着的是性能:直接字符串比较比正则表达式匹配快得多。

经验法则:如果您想匹配某个模式,请使用正则表达式。否则使用精确的字符串比较。

关于apache - mod_rewrite - RewriteCond - 为什么需要比较语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41509685/

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