rewritemap不匹配

时间:2009-12-16 13:37:18

标签: apache mod-rewrite isapi-rewrite rewritemap

我的重写地图不匹配,我遇到了问题:

RewriteMap map txt:rewritemaps\map.txt  [NC]
RewriteCond ${map:$1|NOT_FOUND} !NOT_FOUND [NC]
RewriteRule ^(.+)$  ${map:$1}   [NC, R=301]

地图有大约4,500个条目,包括:

arctic  /Destinations/Polar-Regions/The-Arctic.aspx

我的RewriteLog,设置为9级,记录:

init rewrite engine with requested uri /arctic
Htaccess process request C:\Program Files\ISAPI Rewrite\httpd.conf
Htaccess process request C:\Websites\Path\WebSite\.htaccess
[..]
applying pattern '^(.+)$' to uri 'arctic'
map lookup FAILED: map=map[txt] key=arctic
RewriteCond: input='NOT_FOUND' pattern='NOT_FOUND' =>

它适用于不在地图中的页面 - 例如/Contact-Us.aspx,但不适用于应该匹配的内容(例如北极)。我已经尝试更改[NC]标志的位置,删除RewriteCond并重命名地图文件(以防'map'是保留关键字)。没有快乐。它似乎也不是权限问题。

仅供参考,我正在使用Helicontech的ISAPIRewrite,因为我在IIS6上。

3 个答案:

答案 0 :(得分:0)

三点建议:

  1. 尝试使用正斜杠(/)作为目录分隔符。
  2. 如果不起作用,请尝试完全合格的路径。
  3. 不使用RewriteCond尝试。

答案 1 :(得分:0)

如果map.txt与.htaccess位于同一文件夹中,请尝试以下定义:

RewriteMap map txt:map.txt  [NC]

如果它位于其他位置,请尝试使用完全合格的路径。

如果您尚未使用,请考虑更新到ISAPI_Rewrite的最新版本。

答案 2 :(得分:0)

我遇到了同样的问题,并用“”修复,请尝试:

RewriteMap map "txt:rewritemaps\map.txt"  [NC]
RewriteCond ${map:$1|NOT_FOUND} !NOT_FOUND [NC]
RewriteRule "^(.+)$"  "${map:$1}"   [NC, R=301]