Apache Rewrite映射无法在某个点之后处理映射中的行

时间:2014-10-18 03:58:06

标签: apache mod-rewrite hash url-rewriting dbm

我们在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,但同样的事情发生了。

我对下一步该怎么做感到茫然。

1 个答案:

答案 0 :(得分:0)

谢谢Sumurai8。你指出我正确的方向。我们现在的工作原理如下:

RewriteEngine on
RewriteMap modernmap txt:/etc/apache2/maps/salon/modernmap.txt

RewriteCond %{REQUEST_URI} ^(.+)
RewriteCond ${modernmap:%1?%{QUERY_STRING}} ^(.+)
RewriteRule ^(.+) %1? [R=301,L]

RewriteCond ${modernmap:$1|NOT_FOUND} !NOT_FOUND
RewriteRule ^(.+) ${modernmap:$1} [R=301,L]