同一虚拟主机上的 Apache URL 重写在一种情况下有效,但在另一种情况下失败

同一虚拟主机上的 Apache URL 重写在一种情况下有效,但在另一种情况下失败

我遇到了一个奇怪的问题,我根据 URL 中传递的数字和特定字符串,在同一个虚拟主机定义中重写一个 URL 以代理到两个不同的 URL 目标,这在一种情况下运行正常,但在另一种情况下则不行。VHost 定义还包括一个 proxypass 定义。我就是无法将第二个 URL 呈现给用户。服务器 VHOST 配置如下:

    Listen 9443
    NameVirtualHost *:9443
    <VirtualHost *:9443>
    SSLEngine On
    SSLProtocol -ALL +SSLv3 +TLSv1
    SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:!LOW:!SSLv2:!EXPORT
    RewriteLog "/var/log/httpd/rewrite.log"
    RewriteLogLevel 9
    SSLProxyEngine On
    RewriteEngine On

    #Condition One, match digits 100-9999 
    RewriteCond %{HTTP:a-http-header-message} ^(\b[1-9][0-9]{2,3}\b)$
    #do not honor if sessionId is found
    RewriteCond %{QUERY_STRING} !sessionId= [NC]
    RewriteRule ^/standup/main/menu.xml(.*)$ https://someexternal.com/shiv/010$1 [P]

    #Condition Two, Match digits 0-99
    RewriteCond %{HTTP:a-http-header-message} ^(\b[0-9]{1,2}\b)
    #do not honor if sessionId is found
    RewriteCond %{QUERY_STRING} !sessionId=
    RewriteRule ^/standup/main/menu.xml(.*)$ https://localhost.localdomain:9443/response.xml$1 [P]


    ProxyPass /standup http://localhost:99999/standup
    ProxyPassReverse /standup http://localhost:99999/standup

    </VirtualHost>

问题是,当调用条件二时,https://localhost.localdomain:9443/response.xml呈现的内容,用户只能看到http://本地主机:99999/standup/

这根本不影响条件一。response.xml 可从服务器轻松访问,无论是内部还是外部。另外,我在另一台服务器上有完全相同的设置,并且在那里运行良好!SELinux 也被禁用了。有人能帮我看看我做错了什么吗?

谢谢!

相关内容