查询字符串中的 mod_rewrite 和转义 / (%2f)

查询字符串中的 mod_rewrite 和转义 / (%2f)

我想重定向以下网址

oldsite.com/index.htm?Page?somepath%2fsomefile

newsite.com/productindex.htm?p=somepath%2fsomefile

我有以下规则

RewriteCond %{QUERY_STRING} ^Page=(.*)$
RewriteRule ^index.htm$ http://newsite.com?p=%1 [R=301,NC,L]

但它会重定向到

newsite.com/productindex.htm?p=somepath%252Fsomefile
>--------------------------------------^^^^^

有很多参考资料提到了长期存在的双重转义错误,该错误最近已得到修复(2.2.12 我认为)并且当我运行 2.2.9 时我认为 RewriteRule B 标志可能会有帮助,但它使情况变得更糟......

newsite.com/productindex.htm?p=somepath%25252Fsomefile
>--------------------------------------^^^^^^^

Apache 专家有什么想法吗?

答案1

它的NE(无处可逃)我需要的标志

RewriteCond %{QUERY_STRING} ^Page=(.*)$
RewriteRule ^index.htm$ http://newsite.com?p=%1 [R=301,NC,L,NE]

相关内容