在没有使用符号链接的情况下在Apache中创build虚拟目录的正确方法是什么?

我来自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>