Apache 2.4.59中mod_headers调用REQUEST_URI返回(null)问题求助
Apache 2.4.59中REQUEST_URI在Header指令中返回(null)的问题解决
问题原因
在<FilesMatch>配置上下文里,REQUEST_URI环境变量无法被正常获取。因为<FilesMatch>是基于文件系统的匹配逻辑,此时请求的URI还未完成到文件系统路径的映射,相关URI变量尚未初始化,所以最终输出了(null)。
解决方法
方法一:通过REQUEST_FILENAME计算相对路径
利用REQUEST_FILENAME(当前请求对应的文件系统路径)和DOCUMENT_ROOT(网站根目录),结合Apache表达式语法去掉根目录前缀,得到目标相对路径:
<IfModule mod_headers.c> <FilesMatch "\.pdf$"> Header add Link "https://EXAMPLE.COM%{REQUEST_FILENAME}s%{DOCUMENT_ROOT}s=%{REQUEST_FILENAME}s =~ s|^%{DOCUMENT_ROOT}s||; e; rel=\"canonical\"" </FilesMatch> </IfModule>
方法二:切换到LocationMatch上下文
将匹配规则放到<LocationMatch>中,这个上下文基于请求URI匹配,此时REQUEST_URI变量已正常可用:
<IfModule mod_headers.c> <LocationMatch "\.pdf$"> Header add Link "https://EXAMPLE.COM%{REQUEST_URI}e; rel=\"canonical\"" </LocationMatch> </IfModule>
内容的提问来源于stack exchange,提问作者Nazdravi
相关产品推荐
相关产品推荐

