将apache虚拟主机包装在另一个主机上(代理)

时间:2018-10-07 15:09:54

标签: apache virtualhost

假设我有一个英文网站www.x.com,然后是德语网站www.x.de,我想做的是将所有变种指向具有某些隐藏参数(例如?lang = de)的主虚拟主机,但是还优先处理某些文件,例如如果德语版上存在徽标,请使用德语徽标,否则使用x.com虚拟主机中的文件。

到目前为止,除了没有使用虚拟主机之外,我有多个主机可以像上面那样工作,并且变异站点使用代理脚本来调用主页,但是例如,如果在变异主机上存在图像,则可以使用它,否则来自代理。

作为一种新的解决方案,我想将代理脚本删除多个主机,并在VPS上使用apache虚拟主机。

我知道应该(?)可以在服务器上的一个文件夹(虚拟主机)上指向多个别名或多个域(顺便说一下如何传递lang url参数?),但是问题是:

是否可以有虚拟主机A,然后有虚拟主机B,实际上使用虚拟主机A,但是如果虚拟主机B文件夹中存在某些请求的文件,则使用它(作为上述徽标文件)?

第二种解决方案是将所有域指向一个虚拟主机,并以某种方式更改站点脚本,以将某些图像子文件夹用于特定语言,但是我想知道是否有可能实现上述目的。

1 个答案:

答案 0 :(得分:1)

使用mod_rewrite,即使只有一个VirtualHost,您也应该可以获得参数。但是请记住,如果不使用SAN证书,则会在SSL VirtualHosts中遇到问题。否则,您可以将两个单独的VirtualHosts与适当的证书一起使用。徽标部分可能也可以工作,但是维护起来可能负担太大。

ServerName www.example.com
ServerAlias www.example.de

RewriteEngine On

# When using two VHosts you don't need this Cond or the [C] flag
RewriteCond %{HTTP_HOST} www.example.de
RewriteRule ^(.*\.php)$ $1?lang=de [C]

RewriteCond "$1-de\.jpg" -f
RewriteRule ^(logo).jpg$ logo-de.jpg