Apache重写-匹配查询字符串

Apache重写-匹配查询字符串,apache,mod-rewrite,rewrite,Apache,Mod Rewrite,Rewrite,我知道在apache中使用重写如果我想匹配查询字符串,那么我应该使用 RewriteCond %{QUERY_STRING} 这很好,但是,我有一个csv,有大约2000个URL要重写,很多包含随机查询字符串。这将是一个艰苦的过程,通过每一个和创建规则 是否有任何常规方法让重写查看整个url,包括查询字符串并重定向它?尝试重写映射 vurtual主机的配置示例 RewriteEngine on RewriteMap mymap "txt:/path/to/map.txt" RewriteCo

我知道在apache中使用重写如果我想匹配查询字符串,那么我应该使用

RewriteCond %{QUERY_STRING} 
这很好,但是,我有一个csv,有大约2000个URL要重写,很多包含随机查询字符串。这将是一个艰苦的过程,通过每一个和创建规则


是否有任何常规方法让重写查看整个url,包括查询字符串并重定向它?

尝试
重写映射

vurtual主机的配置示例

RewriteEngine on
RewriteMap mymap "txt:/path/to/map.txt"
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteCond ${mymap:%1} >""
RewriteRule ^(.*)$ ${mymap:%1} [L]
和map.txt示例

p=1&i=1 /test.php?n=2
p=1&i=2 /test.php?n=4
p=1&i=3 /test.php?n=6
...

假设它适用于没有高负载的站点:)

尝试
重写地图

vurtual主机的配置示例

RewriteEngine on
RewriteMap mymap "txt:/path/to/map.txt"
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteCond ${mymap:%1} >""
RewriteRule ^(.*)$ ${mymap:%1} [L]
和map.txt示例

p=1&i=1 /test.php?n=2
p=1&i=2 /test.php?n=4
p=1&i=3 /test.php?n=6
...

假设它适用于没有高负载的站点:)

不要在http服务器级别进行重写,而是将其升级到一些脚本语言,例如php。然后,您可以简单地将CSV数据转换为字典数组,并使用
header()
函数重写请求。结果完全相同,但您有更大的灵活性和更方便的语言。是否会有任何性能问题,加载csv,在每个2000重写规则的请求上匹配等?如上所述:您将csv转换为字典数组,实际上您只做一次。之后是静态代码。显然,您不想为每个请求再次解析文件。不要在http服务器级别上进行重写,而是将其升级到某种脚本语言,例如php。然后,您可以简单地将CSV数据转换为字典数组,并使用
header()
函数重写请求。结果完全相同,但您有更大的灵活性和更方便的语言。是否会有任何性能问题,加载csv,在每个2000重写规则的请求上匹配等?如上所述:您将csv转换为字典数组,实际上您只做一次。之后是静态代码。显然,您不想为每个请求再次解析文件。