AH00526: Syntax error on line 276 of httpd.conf: Cannot parse expression in require line: syntax error, unexpected T_ID, expecting T_REGEX or T_REGEX_I
AH00526: Syntax error on line 276 of httpd.conf: Cannot parse expression in require line: syntax error, unexpected T_STR_BEGIN, expecting T_REGEX or T_REGEX_I
Require expr "%{HTTP_HOST} =~ wuxiancheng\.cn"
Require expr "%{HTTP_HOST} =~ 'wuxiancheng\.cn'"
出错原因,正则表达式语法错误。
和RewriteCond中的正则表达式语法不同,expr表达式如果需要使用正则表达式,必须使用正则表一对斜杠(/)作为正则表达式的定界符,如果需要使用/以外的符号作为定界符符,需要在第一个定界符前加一个英文字母m.
还可以在第二个定界符后面加一个英文字母i表示正则表达式不区分大小写。
还需要注意一点,在httpd 2.4.16以前版本中,Require expr后面的表达式不能包含在一对引号中,否则也会报错。
以Require expr为例,正确的正则表达式示例
Require expr "%{HTTP_HOST} =~ /wuxiancheng\.cn/"
Require expr "%{HTTP_HOST} =~ /wuxiancheng\.cn/i"
Require expr "%{HTTP_HOST} =~ m%wuxiancheng\.cn%"Require expr "%{HTTP_HOST} =~ m%wuxiancheng\.cn%i"
错误的Apache expr表达式示例
Require expr "%{HTTP_HOST} =~ wuxiancheng\.cn"
Require expr "%{HTTP_HOST} =~ 'wuxiancheng\.cn'" |
|