У меня есть несколько субдоменов, использующих общий виртуальный сервер и точку входа /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" >
Это должно быть достижимо с помощью.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]
РЕДАКТИРОВАТЬ. Ниже показано, что работает.
RewriteCond %{HTTP_HOST} ^(.+)\.host\.com [NC]
RewriteRule ^public/([^//]+)$ public/%1/$1 [NC,L]
site1
?