Apache 在身份验证之前使用mod_rewrite提取请求头

Apache 在身份验证之前使用mod_rewrite提取请求头,apache,mod-rewrite,mod-perl,Apache,Mod Rewrite,Mod Perl,我需要重写一个URL,将认证令牌从URL复制到头中,因为新客户端不能使用头,并从URL中删除大令牌 <Location /foo/> RewriteEngine On RewriteRule ^(.*)/(authtoken)/([^/]*)(.*)$ $1$4 [E=HAS_auth:$3,L] RequestHeader set AUTHTOKEN %{HAS_auth}e env=HAS_auth SetHandler perl-script PerlAcc

我需要重写一个URL,将认证令牌从URL复制到头中,因为新客户端不能使用头,并从URL中删除大令牌

<Location /foo/>
  RewriteEngine On
  RewriteRule ^(.*)/(authtoken)/([^/]*)(.*)$ $1$4 [E=HAS_auth:$3,L]
  RequestHeader set AUTHTOKEN %{HAS_auth}e env=HAS_auth
  SetHandler perl-script
  PerlAccessHandler AuthHandler
因此,格式为/foo/boo/moo/authtoken/baaaaa/bar的请求被重写为/foo/boo/moo/bar,请求头authtoken:baaaaa被添加到请求中

URI正在被重写,test env var正在被设置,但是访问处理程序mod_perl没有看到AUTHTOKEN头,甚至env{HAS_auth},尽管重写正在工作,但我记录了它


是否可以在authenticationaccess处理程序之前重写和设置头,如果可以,如何进行?

我假设在重写之前会进行身份验证…因为在大多数情况下,重写一个客户端根本不允许访问的资源没有多大意义,我想。这不是我对处理周期的理解。通常,如果您想要基于authn进行重写,您需要特殊的指令LA-U。我最终得到了一个mod_perl解决方案,该解决方案使用PerltTransHandler来操作uri和头。如果知道是否可以用mod_重写和mod_头来完成,那还是很好的。