![Apache 虚拟主机](https://linux22.com/image/487877/Apache%20%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA.png)
我想这样做
<VirtualHost *>
ServerName myDomain.com
DocumentRoot /var/www/myDomain
<Directory /var/www/myDomain>
Rewrite on
RewriteRule ^blog/(.*)$ /var/www/myBlog/$1 [L]
</Directory>
</VirtualHost>
所以 http://www.myDomain.com/blog/将从不同的目录读取文件。上面的方法不起作用,那么,如何在不移动文件的情况下做到这一点?
答案1
无需使用 mod_rewrite 来实现这一点。 别名更适合。
# Alias: Maps web paths into filesystem paths and is used to
# access content that does not live under the DocumentRoot.
Alias /blog /var/www/myBlog
如果你只想更改博客的设置,请添加位置指令。
<Location /blog>
Allowoverride All
</Location>
答案2
像这样做:
<VirtualHost *>
ServerName myDomain.com
DocumentRoot /var/www/myDomain
Alias /blog/ /var/www/myBlog/
</VirtualHost>
答案3
Location
标签只是 Apache 指令的通用容器,因此使用它来“包装”您想要应用于网站“外部视图”部分的任何内容。如果您将内容从多个物理目录拉入一个更大的结构中,这将非常有用,您可以将同一套规则应用于所有目录,而不是拥有多个Directory
条目
Alias
指令是一个简单的重定向,非常适合将长路径显示为简短而整洁的指针。
DocumentRoot
指令设置顶级网页内容目录。
它们都处理目录,但都有些不同。位置主要用于处理我所说的“网络视图”——从外部如何看到它。目录用于处理文件系统上的实际目录的“物理视图”。如果一个目录的内容作为一个 URL 提供,那么它们之间就没有功能差异。
但是,一旦您开始“组合”多个目录,并通过多个 URL(这些 URL 不一定反映其文件系统层次结构)为它们提供服务,您就需要混合并匹配所有这些指令才能达到预期效果。仅仅因为两个指令在一种情况下可能表现相同,并不意味着它们在另一种情况下也会表现相同。