基于查询字符串的Apache Rewrite规则在全局配置文件中不生效问题求助
基于查询字符串的Apache Rewrite规则在全局配置文件中不生效问题求助
我现在碰到个棘手的问题:想在Apache的全局配置文件(存放在conf-available/目录下,已经通过a2enconf命令启用)里检测URL查询字符串中是否存在特定键值对foo=bar,如果存在就执行跳转操作。
我写的代码很简单:
RewriteCond %{QUERY_STRING} foo=bar [NC] RewriteRule ^(.*)$ http://linkedin.com [R=301,L]
跳转去LinkedIn只是为了测试效果(毕竟这样能一眼看出规则是否生效),但目前完全没反应。
为了确认这个配置文件确实被Apache加载了,我在这段Rewrite代码上方加了一段测试代码:
RedirectMatch 301 ^(.*)$ http://www.cnn.com$1
这段RedirectMatch完全正常,一访问就跳转到CNN,说明配置文件是生效的,但下面的Rewrite规则就是不工作。
补充下运行环境:Apache是在Docker容器里运行的,本地的8080端口映射到容器的80端口,我访问的测试地址是http://localhost:8080?foo=bar。另外,如果把这段Rewrite代码放到.htaccess文件里,完全能正常触发跳转,这就让我更困惑了。
我是不是钻进某个细节盲区了,漏掉了什么显而易见的点?
更新:完整配置文件内容
<IfModule mod_rewrite.c> RewriteEngine On # Verifies that this conf is loading properly # RedirectMatch 301 ^(.*)$ http://www.cnn.com$1 RewriteCond %{QUERY_STRING} foo=bar [NC] RewriteRule ^(.*)$ http://linkedin.com [R=302,L] </IfModule>
备注:内容来源于stack exchange,提问作者Rob Wilkerson
相关产品推荐
相关产品推荐

