Apache条件重定向规则不转发标头值

时间:2017-06-23 01:07:51

标签: apache url mod-rewrite http-headers mod-proxy

目标: 根据请求的特定标头(HTTP_SM_USER)值(在Site1中)执行从Site1到Site2的条件重定向/转发,并确保所有当前自定义标头数据作为重定向/转发的一部分转发到Site2。用户可以在重定向后在浏览器窗口中看到网址更改。

流量: 用户访问站点1 - > 外部应用程序根据特定条件设置除默认HTTP标头之外的一些自定义标头 - > Web服务器查找特定标头值如果匹配将所有标题重定向到站点2。

Apache Web服务器配置:

<VirtualHost  *.443>
    ServerName site1.com
    ServerAdmin ashish@test.com
    UseCanonicalName on
    DocumentRoot /var/www/html

    #
    # SSL Config comes here
    #

    ErrorLog /path/to/error/log
    TransferLog /path/to/access/log
    LogLevel warn

    RewriteEngine On
    RewriteCond %{HTTP:SM_USER} ^USER1$ [NC]
    RewriteRule .* https://site2.com/$1 [R=301, L]

    <Location /page1>
    .
    .
    </Location>

    .
    .
    .

</VirtualHost>

问题:条件重定向发生但标题丢失。我该怎么做才能确保HTTP标头也被转发?我试着看看apache mod_proxy但是不确定在这个场景中如何使用它。专家请帮忙。我们也欢迎任何其他建议。

1 个答案:

答案 0 :(得分:0)

<强>解决方案:

在使用以下标志和代理规则进行大量故障排除后,我终于使用了mod_proxy。所有重写规则都已删除。

ProxyRequests Off
ProxyPreserveHost On
SSLProxyEngine On

ProxyPass "/" "https://site2.com/" Keepalive=On
ProxyPassReverse "/" "https://site2.com/"

注意:用户访问站点1 - &gt;外部应用程序将标头和apache立即代理到站点2.现在可以在Site2上使用标头。