Apache mod_alias设置路径别名

有服务器方面的问题无法解决?点击这里寻求帮助。

文章目录
[隐藏]

在许多情况下,Apache主机提供的所有资源都位于该主机的DocumentRoot中。 DocumentRoot是在配置块中指定的目录。 此目录用于表示用户在文件系统上通过HTTP访问的各种文件,目录和资源。 但是,管理员通常要对文件系统上不位于DocumentRoot中的资源提供HTTP访问。 虽然Apache在某些情况下将遵循符号链接,但这可能很难维护。 因此,Apache可以指定一个Alias以让请求中的路径使用另一个路径

创建Alias


通常,虚拟主机配置指定一个DocumentRoot,按照惯例会指定public_html/或public/命名的目录。 如果example.com虚拟主机的文档根目录是/srv/www/example.com/public_html/,则对http://www.example.com/index.htm的请求将返回位于/srv/www/example.com/public_html/index.htm。
如果管理员需要在code/资源请求访问/srv/git/public/下的文件,即可以在http://example.com/code/访问它,则需要设置别名。 如下示例:

  1. DocumentRoot /srv/www/example.com/public_html/
  2. Alias /code /srv/git/public
  3. <Directory /srv/git/public>
  4.     Order allow,deny
  5.     Allow from all
  6. </Directory>

如果没有Alias指令,对http://example.com/code/的请求将返回/srv/www/example.com/public_html/code/文件夹中的可用资源。 但是,别名将指示Apache提供来自/srv/git/public目录的内容。 配置块允许远程用户访问此目录。
使用Alias指令时需要考虑几个重要因素:
Directory配置块需要在Alias指令之后创建。 这使得可以允许访问和以其他方式配置那些目录。 在上面的示例中是/srv/git/public。
通常,在Alias指令中避免使用尾部斜杠。 如果请求http://example.com/code应用的是Alias /code/ /srv/git/public/指令,请求URL没有尾部斜杠,即没有匹配Alias,资源将从DocumentRoot提供。
Alias指令需要在根级服务器配置(例如httpd.conf)或配置块中创建。
除了Alias之外,Apache还提供了一个AliasMatch指令,它提供类似的功能。 AlaisMatch提供了将给定资源的一类请求别名到DocumentRoot之外的位置的额外功能。 让我们考虑另一个虚构的example.com虚拟主机配置:

  1. DocumentRoot /srv/www/example.com/public_html/
  2. AliasMatch /code/projects/(.+) /srv/git/projects/$1
  3. <DirectoryMatch "^/srv/git/projects/.+$">
  4.     Order allow,deny
  5.     Allow from all
  6. </Directory>

在此示例中,对http://example.com/code/projects/my_app和http://example.com/code/projects/my_app2等网址的请求将分别由/srv/git/projects/my_app和/srv/git/projects/my_app2提供资源。 然而,http://example.com/code/projects将从/srv/www/example.com/public_html/code/projects/而不是/srv/git/projects/提供,因为在别名中的/code/projects/(.+有尾部斜杠。
虽然Alias的用例有点少,但是该功能对于维护安全且易于维护的Web服务器非常有效。

转载请保留原文链接:Linux运维日志 » Apache mod_alias设置路径别名

打赏

如果此文对你有所帮助,请随意打赏鼓励作者^_^

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址