我希望有人可以帮助解决一个不寻常的情况。
我的httpd.conf文件中有一个主要的重写规则,它处理我们所有的动态内容。该规则看起来像这样,并且工作正常:
RewriteRule ^(。)(/。 / d / [^.]*)$ /category/refine.cgi \?\& a \ = $ 2
我遇到的问题是,当我尝试使用.htaccess创建一个简单的301重定向时,查询参数会自动附加到URL的末尾,因此最终结果如下所示:
http://www.example.com/category/page.html的&安培; A = /类别/子类别/东西/ d /页/
请注意,在使用.htaccess创建301重定向时,查询字符串会附加到URL。
我根据具体情况为此提供解决方案,但每次我想要进行简单的301重定向时,创建新规则都是不切实际的。
所以,我想知道我是否可以以任何方式编辑我的“主规则”,以便在使用.htaccess创建重定向时,查询参数不会附加到目标URL。
提前感谢您提供的任何帮助。
答案 0 :(得分:0)
这就是你的规则定义它要做的事情:
RewriteRule ^(.)(/./d/[^.]*)$ /category/refine.cgi\?\&a\=$2
它表示要创建一个如下所示的网址: ?类别/ refine.cgi&安培; A = /富/酒吧/
如果您不希望发生这种情况,请将规则更改为:
RewriteRule ^(.)(/./d/[^.]*)$ /category/refine.cgi\?
答案 1 :(得分:0)
如果您有多个想要取消查询字符串值的简单重定向,您可以将所有重定向放在RewriteMap中(因为您已经可以访问httpd.conf),并且有一个.htaccess规则抑制查询字符串如下
放在htaccess中
#if there is a match in the map
RewriteCond ${redirect_map:$1} !=""
RewriteRule ^(.*)$ ${redirect_map:$1}? [R,L]
放在httpd.conf中
RewriteEngine On
RewriteMap redirect_map txt:/usr/local/apache/conf/redirect.map
/usr/local/apache/conf/redirect.map 的内容 键后跟一个空格,后跟目标
directory/subdirectory1/subdirectory2/ example/category7/subdirectory/file.html
directory4/subdirectory2/subdirectory9/ example/category5/subdirectory4/file332.html