apache虚拟主机中的if-then-else条件

时间:2014-01-17 08:12:35

标签: apache mod-rewrite virtualhost

我为https ://sb.domain1.com定义了一个Apache虚拟主机,我需要根据调用虚拟主机的IP地址执行不同的操作。如果来自172.16.xxx.yyy,则我需要重定向到http ://sb.domain2.com,否则我需要重定向到http ://sb.domain1.com

那是我不知道如何翻译以下行(来自/etc/http/conf.d/ssl.conf文件):

<VirtualHost 192.168.254.68:443>
    ServerName sb.domain1.com
    SSLProxyEngine on
    SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
    SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
    SSLCertificateChainFile /etc/httpd/conf/ssl.crt/STAR.ca-bundle
    SSLEngine on
    SSLSessionCacheTimeout 600
    if IP = 172.16.xxx.yyy
        then 
           Redirect to http ://sb.domain2.com
        else
           ProxyPass / http ://sb.domain1.com/
           ProxyPassReverse / http ://sb.domain1.com/
        else
    ErrorLog "|/usr/sbin/rotatelogs /var/log/httpd/sb/ssl_error_log 86400"
    CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/sb/ssl_access_log 86400" combined
</VirtualHost>

你能建议我翻译上述指令吗?

1 个答案:

答案 0 :(得分:0)

有些事情应该有效:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^172\.16\.
RewriteRule ^/(.*) http://sb.domain2.com/$1 [L,QSA]

然后只是

ProxyPass / http://sb.domain1.com/
ProxyPassReverse / http://sb.domain1.com/

毕竟,如果您匹配IP,您将被重定向,因此此处不会发出任何其他请求。然后其他人将被代理。