我来自IIS,设置虚拟目录是非常容易的。 您只需右键单击并添加一个指向您喜欢的任何path的“虚拟目录”。 查看网站时,相对path会通过浏览器反映出来。
我如何用Apache完成同样的事情? Symlinks吓倒我,因为删除级联通过。 有没有更好的方法来在Apache中创build虚拟目录? 我正在使用Mac的MAMP使用apache2。
在Apacheconfiguration文件中使用Alias
指令。
Alias /virtual-dir /var/www/foo
此外, rm -r
不会遍历符号链接,也不会级联。
如果您将多个域指向同一个公共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/ {文件名}
除非你添加额外的规则,否则当前主机目录中的任何内容都不能被删除。 对于host_one VirtualHost(我没有确认这个规则是否工作):
# prevent showing content from other hosts RewriteRule "/?images/!(host_one/.*)" /404 [NC,L]
如果是安全服务器,“别名”目录也需要进入VirtualHost 443configuration
<VirtualHost *:443> ... Alias /virtual-dir /var/www/foo </VirtualHost>