在 apache 配置中,我应该如何将 Alias 模块用于文档根目录中的目录?
in apache config, how should I use the Alias module for a directory in the document root?
背景
将 Ubuntu 与 apache2 一起使用:
在我的 sites-enabled
配置中,我有一个 Alias
命令,如下所示:
Alias "/someDir" "/webSiteDir"
效果很好。
因此,/someDir
的绝对路径实际上是 "virtual directory",它有效地存在于 /var/www/html/someDir
。而 /webSiteDir
实际上存在于 Ubuntu 框文件系统的根目录中。
问题 1
如何从文档根目录中的一个目录创建一个别名到文档根目录中的另一个目录? Apache 手册明确指出 Alias
应该用于重定向到文档根目录 之外的目录 。那么,如果 "virtual directory" 和实际目录都在 文档根目录 中,我应该使用什么?
现在,我使用以下行:
Alias "/anotherDir" "/var/www/html/thisDir"
当文档根在同一配置中仅几行明确定义为 var/www/html
时,这看起来很笨拙。
当两个目录位于同一文档根目录下时,我是否应该使用 Alias
以外的其他命令?
问题 2
apache 配置如何正确确定不同条目的绝对路径?
例如,在上面一行中:
别名“/anotherDir”“/var/www/html/thisDir”
/anotherDir
被视为 /var/www/html/
下的 "virtual directory" 但第二部分 /var/www/html/thisDir
被视为关于 Ubuntu 文件系统的绝对路径。
好的,也许这只是 Alias
命令的语法,因为第一个条目总是相对的,第二个条目总是绝对的。
那么 <Directory>
属性呢?
我有一个条目:
<Directory "/">
这似乎是指 /var/www/html/
的文档根目录 - 一个相对路径。
我还有:
<Directory "/thisDir">
这似乎指的是 /var/www/html/thisDir
- 另一个相对路径
而我还有一个:
<Directory "/webSiteDir">
这似乎是指 /webSiteDir
.
文件系统中的 绝对路径
那么,是我的配置文件搞砸了,还是 apache 以某种方式知道什么时候是文档根目录的相对路径,或者是系统根目录的绝对路径?
从某种意义上说,Alias 并不关心您的文档根目录。也就是说,只需在您的 VirtualHost 中定义 Alias,第一个参数是一个新的虚拟路径,第二个参数始终是一个文件系统路径,可以是也可以不是在 documentroot 中,Alias 不关心或区分它。
那么,问题1
始终使用别名来定义虚拟路径,无论文件系统位于何处,只在需要时使用它。
问题2
你有一个很大的误解,目录总是在你的 OS 中指定一个完整路径,也就是说 <Directory "/">
is / 在你的 OS 文件系统中并且与你的其他部分相同"Directory" 个示例。
如果您想影响使用 Alias 创建的路径,您可以使用 "Location" 或带有完整路径的 Directory,并且该路径实际上是相对于 documentroot。
背景
将 Ubuntu 与 apache2 一起使用:
在我的 sites-enabled
配置中,我有一个 Alias
命令,如下所示:
Alias "/someDir" "/webSiteDir"
效果很好。
因此,/someDir
的绝对路径实际上是 "virtual directory",它有效地存在于 /var/www/html/someDir
。而 /webSiteDir
实际上存在于 Ubuntu 框文件系统的根目录中。
问题 1
如何从文档根目录中的一个目录创建一个别名到文档根目录中的另一个目录? Apache 手册明确指出 Alias
应该用于重定向到文档根目录 之外的目录 。那么,如果 "virtual directory" 和实际目录都在 文档根目录 中,我应该使用什么?
现在,我使用以下行:
Alias "/anotherDir" "/var/www/html/thisDir"
当文档根在同一配置中仅几行明确定义为 var/www/html
时,这看起来很笨拙。
当两个目录位于同一文档根目录下时,我是否应该使用 Alias
以外的其他命令?
问题 2
apache 配置如何正确确定不同条目的绝对路径?
例如,在上面一行中:
别名“/anotherDir”“/var/www/html/thisDir”
/anotherDir
被视为 /var/www/html/
下的 "virtual directory" 但第二部分 /var/www/html/thisDir
被视为关于 Ubuntu 文件系统的绝对路径。
好的,也许这只是 Alias
命令的语法,因为第一个条目总是相对的,第二个条目总是绝对的。
那么 <Directory>
属性呢?
我有一个条目:
<Directory "/">
这似乎是指 /var/www/html/
的文档根目录 - 一个相对路径。
我还有:
<Directory "/thisDir">
这似乎指的是 /var/www/html/thisDir
- 另一个相对路径
而我还有一个:
<Directory "/webSiteDir">
这似乎是指 /webSiteDir
.
那么,是我的配置文件搞砸了,还是 apache 以某种方式知道什么时候是文档根目录的相对路径,或者是系统根目录的绝对路径?
从某种意义上说,Alias 并不关心您的文档根目录。也就是说,只需在您的 VirtualHost 中定义 Alias,第一个参数是一个新的虚拟路径,第二个参数始终是一个文件系统路径,可以是也可以不是在 documentroot 中,Alias 不关心或区分它。
那么,问题1
始终使用别名来定义虚拟路径,无论文件系统位于何处,只在需要时使用它。
问题2
你有一个很大的误解,目录总是在你的 OS 中指定一个完整路径,也就是说 <Directory "/">
is / 在你的 OS 文件系统中并且与你的其他部分相同"Directory" 个示例。
如果您想影响使用 Alias 创建的路径,您可以使用 "Location" 或带有完整路径的 Directory,并且该路径实际上是相对于 documentroot。