.htaccess 用于匹配规则的模式

n1bvdmb6  于 2022-11-16  发布在  其他
关注(0)|答案(2)|浏览(106)

我已经尝试为规则集编写htaccess。下面是我要匹配的规则模式

0x00|0x01|0x02|0x03|0x04|0x05|0x06|0x07|0x08|0x09|0x0A|0x0B|0x0C|
0x0D|0x0E|0x0F|0x10|0x11|0x12|0x13|0x14|0x15|0x16|0x17|0x18|0x19|
0x1A|0x1B|0x1C|0x1D|0x1E|0x1F|0x7F

我试过0x([01-09]|[0A-0F]|[10-19]|[1A-1F]|7F)

zpf6vheq

zpf6vheq1#

你误导了自己,因为作为一个人,你知道“01”,“02”等是一个数字序列。正则表达式不关心数字,他们关心的是字符[01-09]并不意味着“01到09”,它意味着“0;或1到0;或9”-这显然没有意义。
如果您将其逐字符分解,则会得到:

  • “0个”
  • “x”
  • “0”或“1”(在正则表达式中,集合[01]
  • “0”到“9”(字符范围[0-9]),或“A”到“F”([A-F]
  • 加上“0x 7 F”的特殊情况

例如,你可以这样写:

0x[01]([0-9]|[A-F])|0x7F

您可以将两个范围合并为一个,得到:

0x[01][0-9A-F]|0x7F

共享0x实际上并不会使其更短:

0x([01][0-9A-F]|7F)
4si2a6ki

4si2a6ki2#

0x00|0x01|0x02|0x03|0x04|0x05|0x06|0x07|0x08|0x09|0x0A|0x0B|0x0C| 0x0D|0x0E|0x0F|0x10|0x11|0x12|0x13|0x14|0x15|0x16|0x17|0x18|0x19| 0x1A|0x1B|0x1C|0x1D|0x1E|0x1F|0x7F
这已经是一个正则表达式。您可以完全按照编写的方式使用它(作为正则表达式的一部分)。
但可以简化为:

0x([01][0-9A-F]|7F)

您可能希望使用(?i)模式修饰符使此正则表达式不区分大小写。例如:

(?i)0x([01][0-9A-F]|7F)

或者在.htaccess中使用带有mod_rewrite指令的NCnocase)标志。
顺便说一句,这基本上与my answer中使用的正则表达式相同,以回答您前面的问题:
Stop redirecting page if the url have control character

相关问题