【发布时间】:2014-10-18 03:58:05
【问题描述】:
我们的 apache 配置中有以下重写地图设置:
RewriteEngine on
RewriteMap modernmap txt:/etc/apache2/maps/salon/www.modernmap.com.txt
RewriteCond ${modernmap:$1|NOT_FOUND} !NOT_FOUND
RewriteRule ^(.+) ${modernmap:$1} [R=301,L]
文本文件包含大约 28,000 个条目,如下所示:
/url1 http://www.example.com/url2
/url3?id=3 http://www.example.com/url9?id=33
文本文件中前 24320 行的重写工作,然后在第 24320 行之后的所有重写都失败。我删除了第 24319、24320 和 24321 行的 URL,以防万一它们有问题并且问题仍然存在。
我已经在一个较小的子集上进行了尝试,但问题只是转移到了另一行。
我尝试将文本文件转换为 dbm 并使用 dbm,但同样的事情发生了。
我有点不知道下一步该做什么。
【问题讨论】:
-
为什么您的地图包含查询字符串?
RewriteRule确实匹配主机名 + 有时前缀路径之后和第一个参数中的查询字符串之前的所有内容,因此永远不会匹配/url3?id=3。
标签: apache mod-rewrite hash url-rewriting dbm