在两个子域的文档根目录之间共享资产文件夹
Share assets folder between two subdomain's document roots
我有两个共享相同资产(js、css、img 等)但使用不同 subdomains/document 根的 Web 应用程序。
我正在尝试弄清楚如何在两个文档根目录之间共享一个资产文件夹,这样我就可以避免在对资产应用更改后更改每个子域的资产文件夹。
感谢您的宝贵时间。
当前结构:
www/html
├─ subdomain1
│ └─ assets
│ └─ index.php
└─ subdomain2
└─ assets
└─ index.php
所需结构:
www/html
├─ assets
├─ subdomain1
│ └─ index.php
└─ subdomain2
└─ index.php
VHost 配置:
子域一:
<VirtualHost *:80>
ServerName www.one.mydomain.com
ServerAlias one.mydomain.com
ServerAdmin admin@example.com
DocumentRoot /var/www/html/subdomain1/
<Directory /var/www/html/subdomain1/>
Options -Indexes +FollowSymLinks
AllowOverride All
DirectoryIndex index.php
</Directory>
ErrorLog /var/www/html/logs/subdomain1-error.log
CustomLog /var/www/html/logs/subdomain1-access.log combined
</VirtualHost>
子域二:
<VirtualHost *:80>
ServerName www.two.mydomain.com
ServerAlias two.mydomain.com
ServerAdmin admin@example.com
DocumentRoot /var/www/html/subdomain2/
<Directory /var/www/html/subdomain2/>
Options -Indexes +FollowSymLinks
AllowOverride All
DirectoryIndex index.php
</Directory>
ErrorLog /var/www/html/logs/subdomain2-error.log
CustomLog /var/www/html/logs/subdomain2-access.log combined
</VirtualHost>
在第二台主机的配置中,您可以使用 Apache 的 mod_alias 定义“主要”资产目录的别名:
<VirtualHost *:80>
ServerName www.two.mydomain.com
...
<Location "/assets">
Alias "/var/www/html/subdomain1/assets"
</Location>
然后删除重复的目录/var/www/html/subdomain2/assets
。
或者,您可以保持配置不变,删除第二个目录,然后符号链接到第一个目录:
mv /var/www/html/subdomain2/assets /var/www/html/subdomain1/assets.old
ln -s /var/www/html/subdomain1/assets /var/www/html/subdomain2
但是请注意,这两种方法都可能使 deployments/development 变得棘手,因为您实质上是将它们锁定为始终具有相同文件的相同版本。最终,最好将它们保留为重复项,而不是解决您的部署机制。
我有两个共享相同资产(js、css、img 等)但使用不同 subdomains/document 根的 Web 应用程序。
我正在尝试弄清楚如何在两个文档根目录之间共享一个资产文件夹,这样我就可以避免在对资产应用更改后更改每个子域的资产文件夹。
感谢您的宝贵时间。
当前结构:
www/html
├─ subdomain1
│ └─ assets
│ └─ index.php
└─ subdomain2
└─ assets
└─ index.php
所需结构:
www/html
├─ assets
├─ subdomain1
│ └─ index.php
└─ subdomain2
└─ index.php
VHost 配置:
子域一:
<VirtualHost *:80>
ServerName www.one.mydomain.com
ServerAlias one.mydomain.com
ServerAdmin admin@example.com
DocumentRoot /var/www/html/subdomain1/
<Directory /var/www/html/subdomain1/>
Options -Indexes +FollowSymLinks
AllowOverride All
DirectoryIndex index.php
</Directory>
ErrorLog /var/www/html/logs/subdomain1-error.log
CustomLog /var/www/html/logs/subdomain1-access.log combined
</VirtualHost>
子域二:
<VirtualHost *:80>
ServerName www.two.mydomain.com
ServerAlias two.mydomain.com
ServerAdmin admin@example.com
DocumentRoot /var/www/html/subdomain2/
<Directory /var/www/html/subdomain2/>
Options -Indexes +FollowSymLinks
AllowOverride All
DirectoryIndex index.php
</Directory>
ErrorLog /var/www/html/logs/subdomain2-error.log
CustomLog /var/www/html/logs/subdomain2-access.log combined
</VirtualHost>
在第二台主机的配置中,您可以使用 Apache 的 mod_alias 定义“主要”资产目录的别名:
<VirtualHost *:80>
ServerName www.two.mydomain.com
...
<Location "/assets">
Alias "/var/www/html/subdomain1/assets"
</Location>
然后删除重复的目录/var/www/html/subdomain2/assets
。
或者,您可以保持配置不变,删除第二个目录,然后符号链接到第一个目录:
mv /var/www/html/subdomain2/assets /var/www/html/subdomain1/assets.old
ln -s /var/www/html/subdomain1/assets /var/www/html/subdomain2
但是请注意,这两种方法都可能使 deployments/development 变得棘手,因为您实质上是将它们锁定为始终具有相同文件的相同版本。最终,最好将它们保留为重复项,而不是解决您的部署机制。