我想拥有两个子域my.domain.com
和foo.my.domain.com
,两个都重定向到我的Apache2服务器(127.0.0.1/my/
)的相同目录。
但是,我希望那里的脚本能够分辨请求来自哪个域。从我的角度来看,有两种方法可以做到这一点:
?foo=bar
在每个包含的请求的末尾添加.php
,但这听起来很脏但是,第二个启用ProxyPreserveHost时,我得到了一个永无止境的301重定向循环。这是虚拟主机配置:
My.Domain.com:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName my.domain.com
ProxyPass / http://127.0.0.1/my/
ProxyPassReverse / http://127.0.0.1/my/
ProxyRequests Off
SSLCertificateFile /etc/letsencrypt/live/my.domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/my.domain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
Foo.My.Domain.Com:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName foo.my.domain.com
ProxyPass / http://127.0.0.1/my/
ProxyPassReverse / http://127.0.0.1/my/
ProxyRequests Off
ProxyPreserveHost On # creates 301 loop!
SSLCertificateFile /etc/letsencrypt/live/my.domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/my.domain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
注意:我也尝试放入ProxyPassReverse / https://foo.my.domain.com/
第二个域foo.domain.com
,但没有任何改变。
如何保存主机而不引起重定向循环?
找到了:
$_SERVER["HTTP_X_FORWARDED_HOST"]
包含主机名,因此foo.my.domain.com
就我而言。我不需要UseCanonicalName
也没有ProxyPreserveHost
最后。