在 apache 中使用外部 rewrite 引擎

我想在我的前端服务器(apache)上运行一个 rewrite 引擎。

我已经添加了以下配置

<If "-f 'PATH_TO_MY_LUA_SCRIPT'">
    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteMap cust "prg:PATH_TO_MY_LUA_SCRIPT"
      RewriteRule ^(.*)$ ${cust:%{REQUEST_URI}}" [QSA,L]
    </IfModule>
  </If>

但是 Apache 报错: RewriteMap not allowed here

PS:当然,PATH_TO_MY_LUA_SCRIPT 被完整路径替换了(并且我的脚本是可执行的) 有人使用过外部 rewrite Lua 脚本和 Apache 2.4 吗?

点赞
用户1741542
用户1741542

请参阅RewriteMap文档。

上下文:服务器配置、虚拟主机

Context表示

上下文

这指示指令在服务器配置文件中合法的位置。它是一个由以下一个或多个值组成的逗号分隔列表:

  • 服务器配置...
  • 虚拟主机...
  • 目录...
  • .htaccess...

指令仅允许在指定的上下文中使用;如果您尝试在其他地方使用它,您将得到一条配置错误,这将要么阻止服务器正确处理该上下文的请求,要么阻止服务器根本无法运行——即,服务器甚至不会启动。

因此您不能在.htaccess文件中使用RewriteMap,只能在主配置文件或虚拟主机配置中使用。


在这种情况下,If导致了失败,因为

只有支持目录上下文的指令才能在此配置部分中使用。

但是RewriteMap可能不能在目录上下文中使用。因此,即使您在主配置文件或虚拟主机配置中拥有它,也不应在If指令内使用它。

2017-03-21 11:13:06
用户2237031
用户2237031

当然,我忘记说明了。

这个配置不在我的 .htaccess 文件中,而是在主虚拟主机配置中。

2017-03-21 11:15:40