Apache 在身份验证之前使用mod_rewrite提取请求头
我需要重写一个URL,将认证令牌从URL复制到头中,因为新客户端不能使用头,并从URL中删除大令牌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
<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_头来完成,那还是很好的。