0

我的重写映射不匹配有问题:

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 并重命名地图文件(以防“地图”是保留关键字)。没有喜悦。这似乎也不是权限问题。

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

4

3 回答 3

0

三个建议:

  1. 尝试使用正斜杠 (/) 作为目录分隔符。
  2. 如果这不起作用,请尝试完全合格的路径。
  3. 尝试不使用 RewriteCond。
于 2009-12-16T19:57:57.543 回答
0

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

RewriteMap map txt:map.txt  [NC]

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

如果您还没有使用 ISAPI_Rewrite,请考虑更新到最新版本。

于 2010-02-01T16:05:11.150 回答
0

我有同样的问题并用“”修复它,尝试:

RewriteMap map "txt:rewritemaps\map.txt"  [NC]
RewriteCond ${map:$1|NOT_FOUND} !NOT_FOUND [NC]
RewriteRule "^(.+)$"  "${map:$1}"   [NC, R=301]
于 2018-07-17T14:49:38.700 回答