我以前使用过 IIS,在那里设置虚拟目录非常简单。只需右键单击并添加指向您喜欢的任何路径的“虚拟目录”。查看网站时,此相对路径会反映在浏览器中。
我如何使用 Apache 完成同样的任务?符号链接让我害怕,因为删除会级联。有没有更好的方法在 Apache 中创建虚拟目录?我正在使用 MAMP for Mac,它使用 apache2。
答案1
答案2
如果您将多个域指向同一个公共 html 目录,并且实际内容位于公共 html(Web 根目录)之外,则可以分两步执行此操作:
1)重写每个域的目录,例如
<VirtualHost 127.0.0.1:80>
ServerName host_one.ca
RewriteEngine On
RewriteRule "/?images(.*)" "/www/shared/host_one/images/$1" [NC]
</VirtualHost>
<VirtualHost 127.0.0.1:80>
ServerName host_two.ca
RewriteEngine On
RewriteRule "/?images(.*)" "/www/shared/host_two/images/$1"
</VirtualHost>
2)然后添加符号链接(或者别名)
ln -s /shared/host_one/images /www/html/images/host_one
ln -s /shared/host_two/images /www/html/images/host_two
只要小心一点。host_two 图像可以通过 host_one 访问:domain_one.ca/images/host_two/{filename}
除非你添加额外的规则,删除当前主机目录中不存在的任何内容。对于 host_one VirtualHost(我做了不是确认此规则是否有效):
# prevent showing content from other hosts
RewriteRule "/?images/!(host_one/.*)" /404 [NC,L]
答案3
如果它是安全服务器,则“别名”目录也需要转到 VirtualHost 443 配置中
<VirtualHost *:443>
...
Alias /virtual-dir /var/www/foo
</VirtualHost>