我有多个子域都使用通用虚拟服务器和入口点/var/www/index.php
,此文件使用$_SERVER['HTTP_HOST']
来确定适用的"站点"用于控制生成的HTML。
site1.example.com
site2.example.com
site3.example.com
...
siteN.example.com
<VirtualHost *:443>
ServerName example.com
ServerAlias *.example.com
<Directory "/var/www">
</Directory>
</VirtualHost>
现在,我希望每个子域网站都可以使用各自的公共图像资源。为此,我目前只为每个站点添加了可供所有站点使用的单个目录
/var/www/public/site1/image1.png
/var/www/public/site1/image2.png
/var/www/public/site1/image3.png
/var/www/public/site2/image4.png
/var/www/public/site2/image5.png
然后使用PHP根据$_SERVER['HTTP_HOST']
编写适当的路径。
<img src="/public/site1/image1.png" alt="bla" >
鉴于这种情况,是否可以使用Apache(或者可能是PHP或Linux符号链接)不需要子域名?
<img src="/public/image1.png" alt="bla" >
答案 0 :(得分:1)
必须使用.htacces实现。您需要实现以下内容:
if($domain is 'site1.host.com')
{
rewrite '/public/image1.png' to '/public/site1/image1.png'
}
未经测试,可能需要添加其他图片扩展程序:
RewriteCond %{HTTP_HOST} ^(.+)\.host\.com [NC]
RewriteRule ^/public/(.*\.png)$ /public/$1/$2 [NC,L]
EDIT。以下似乎有效。
RewriteCond %{HTTP_HOST} ^(.+)\.host\.com [NC]
RewriteRule ^public/([^//]+)$ public/%1/$1 [NC,L]