.htaccess配置中RewriteRule报‘bad flag delimiters’错误的原因排查
.htaccess配置中RewriteRule报‘bad flag delimiters’错误的原因排查
嗨,我来帮你捋捋这个问题~你碰到的“RewriteRule: bad flag delimiters”错误,问题根源出在你写的那条RewriteRule语句上:
RewriteRule ([^/]+)\.pdf $ - [E=FILENAME:$1]
问题分析
RewriteRule的标准语法是 RewriteRule 匹配模式 替换目标 [标记],你这里在替换目标位置写了$ -,完全不符合规则:
$是无意义的多余字符,Apache会把它当成你的替换目标,后面的-就会被错误识别为标记的一部分,而标记必须用[]包裹,这种混乱的结构直接触发了“标记分隔符错误”的提示。- 如果你只是想设置环境变量而不做URL替换,替换目标应该直接用
-,它的作用就是表示“不进行任何替换操作”。
修正后的代码
把那条RewriteRule改成下面这样就能解决问题了:
<FilesMatch "\.pdf$"> RewriteRule ([^/]+)\.pdf - [E=FILENAME:$1] <If "%{REQUEST_URI} =~ m#^/wp-content/themes/my_theme/pdf/fr/.*#"> Header add Link '<https://www.example.com/wp-content/my_theme/theme_SES/pdf/fr/%{FILENAME}e>; rel="canonical"' </If> </FilesMatch>
说白了就是删掉多余的$,让替换目标只有-,这样Apache就能正确识别后面的[E=FILENAME:$1]是合法的标记了。
备注:内容来源于stack exchange,提问作者Zekura
相关产品推荐
相关产品推荐

