咨询热线:4006-75-4006
售前:9:00-23:30 备案:9:00-18:00 技术:7*24h
Apache mod_alias设置路径别名
在许多情况下,Apache主机提供的所有资源都位于该主机的DocumentRoot中。 DocumentRoot是在
通常,虚拟主机配置指定一个DocumentRoot,按照惯例会指定public_html/或public/命名的目录。 如果example.com虚拟主机的文档根目录是/srv/www/example.com/public_html/,则对http://www.landui.com/index.htm的请求将返回位于/srv/www/example.com/public_html/index.htm。
如果管理员需要在code/资源请求访问/srv/git/public/下的文件,即可以在http://www.landui.com/code/访问它,则需要设置别名。 如下示例:
DocumentRoot /srv/www/example.com/public_html/ Alias /code /srv/git/public <Directory /srv/git/public> Order allow,deny Allow from all </Directory>
如果没有Alias指令,对http://www.landui.com/code/的请求将返回/srv/www/example.com/public_html/code/文件夹中的可用资源。 但是,别名将指示Apache提供来自/srv/git/public目录的内容。 配置块允许远程用户访问此目录。
使用Alias指令时需要考虑几个重要因素:
Directory配置块需要在Alias指令之后创建。 这使得可以允许访问和以其他方式配置那些目录。 在上面的示例中是/srv/git/public。
通常,在Alias指令中避免使用尾部斜杠。 如果请求http://www.landui.com/code应用的是Alias /code/ /srv/git/public/指令,请求URL没有尾部斜杠,即没有匹配Alias,资源将从DocumentRoot提供。
Alias指令需要在根级服务器配置(例如httpd.conf)或配置块中创建。
除了Alias之外,Apache还提供了一个AliasMatch指令,它提供类似的功能。 AlaisMatch提供了将给定资源的一类请求别名到DocumentRoot之外的位置的额外功能。 让我们考虑另一个虚构的example.com虚拟主机配置:
DocumentRoot /srv/www/example.com/public_html/ AliasMatch /code/projects/(.+) /srv/git/projects/$1 <DirectoryMatch "^/srv/git/projects/.+$"> Order allow,deny Allow from all </Directory>
在此示例中,对http://www.landui.com/code/projects/my_app和http://www.landui.com/code/projects/my_app2等网址的请求将分别由/srv/git/projects/my_app和/srv/git/projects/my_app2提供资源。 然而,http://www.landui.com/code/projects将从/srv/www/example.com/public_html/code/projects/而不是/srv/git/projects/提供,因为在?名中的/code/projects/(.+有尾部斜杠。
虽然Alias的用例有点少,但是该功能对于维护安全且易于维护的Web服务器非常有效。