在 mod_rewrite 中转发原始 URI

在 mod_rewrite 中转发原始 URI

我正在尝试使用 mod_rewrite 并以某种方式(最好通过标题)将原始 URI 转发到我的应用程序服务器。

我真正坚持的是如何让客户端在按照重定向到应用服务器之后继续接收我发送的信息。

我想到唯一的方法是传递带有原始 URI 的获取请求,但这看起来很丑陋。

注意-我已经评论过在 Apache 中重定向、更改 URL 或将 HTTP 重定向到 HTTPS - 您想了解但又不敢问的有关 Mod_Rewrite 规则的一切疯狂进阶 Mod_Rewrite 调试教程

我可能忽略了一些东西;如果是这样,请给我正确的术语并关闭重复。:)

编辑:

mod_rewrite 使用 302 重定向到应用服务器。实际的重定向是在客户端进行的。有些域匹配,有些则不匹配。我的规则的基本语法如下所示。

RewriteCond %{HTTP_HOST} mydomain|myalias
RewriteRule ^ http://www.mydomain.org... [R=301,L]

答案1

在重写规则的开头,将 URI 保存到变量中。我将其命名为 ORIGINAL_URI。

RewriteRule (.*) - [E=ORIGINAL_URI:$1]

Apache 是否直接将此请求传递给应用服务器?如果是,请设置自定义标题,我将其称为 Original-URI,为该变量的值。

RequestHeader set "Original-URI" "%{ORIGINAL_URI}e"

Apache 是否会将重定向发送回客户端,然后客户端会发出新请求?只要域保持不变,您就可以告诉客户端设置 cookie。

Header set Set-Cookie "Original-URI=%{ORIGINAL_URI}e"

相关内容