如何让mod_rewrite在查询字符串中放入非字母数字字符?

时间:2015-05-19 10:50:09

标签: regex apache .htaccess mod-rewrite

我正在尝试将重定向添加到.htaccess,如下所示:

RewriteRule ^resources/reports /resources?f[0]=field_resource_type%3Areports [R=301,L]

但是,它被重写为资源?f%5b0%5d = field_resource_typeAreports不起作用。 <和]字符在不需要时进行编码,%3A似乎迷路了。

如果我将确切的替换字符串复制粘贴到浏览器中,那么它没有任何问题,但我似乎无法添加RewriteRule来执行此操作。

我尝试添加[B]和[NE],但它们似乎没有任何区别。

之前有人必须这样做吗?

1 个答案:

答案 0 :(得分:2)

你需要:

  1. 在目标中退出%,否则%3将被视为反向引用
  2. 使用NE(非编码)标志
  3. 使用此规则:

    RewriteRule ^resources/reports /resources?f[0]=field_resource_type\%3Areports [R=301,L,NE]
    

    清除浏览器缓存后进行测试。