Apache 虚拟主机

Apache 虚拟主机

我想这样做

<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 不一定反映其文件系统层次结构)为它们提供服务,您就需要混合并匹配所有这些指令才能达到预期效果。仅仅因为两个指令在一种情况下可能表现相同,并不意味着它们在另一种情况下也会表现相同。

相关内容