我希望有人可以帮助解决一个不寻常的情况 .
我在httpd.conf文件中有一个主要的重写规则,它处理我们所有的动态内容 . 规则看起来像这样,工作正常:
RewriteRule ^( . )(/ ./ d /[^.]*)$ /category/refine.cgi?&a=$2
我遇到的问题是,当我尝试使用.htaccess创建一个简单的301重定向时,查询参数会自动附加到URL的末尾,因此最终结果如下所示:
http://www.example.com/category/page.html ?&a=/category/subcategory/something/d/page/
请注意,使用.htaccess创建301重定向时,查询字符串将附加到URL .
我根据具体情况为此提供了解决方案,但每次我想要进行简单的301重定向时创建新规则都是不切实际的 .
所以,我想知道我是否可以以任何方式编辑我的“主规则”,以便当.htaccess用于创建重定向时,查询参数不会附加到目标URL .
提前感谢您提供的任何帮助 .
2 回答
如果您有多个想要抑制查询字符串值的简单重定向,您可以将所有重定向放在RewriteMap中(因为您已经可以访问httpd.conf),并且有一个.htaccess规则可以抑制查询字符串,如下所示
place in htaccess
place in httpd.conf
contents of /usr/local/apache/conf/redirect.map 键后跟一个空格,后跟目标
这就是你的规则定义它要做的事情:
它说要创建一个看起来像这样的URL:category / refine.cgi?&a = / foo / bar /
如果您不希望发生这种情况,请将规则更改为: