如何使用 Apache 将本地目录映射到本地主机 URL?

如何使用 Apache 将本地目录映射到本地主机 URL?

我只想将一个简单的 PHP 网站放在我的机器上的自定义目录中(例如 /home/znorg/foobar),然后通过类似以下方式在 Ubuntu 上通过 apache2 访问它http://localhost/foobar/

抱歉,如果这是一个重复或太琐碎的问题,但我只是无法在任何地方找到关于如何做到这一点的直接答案。

答案1

另一种方法是:将 URL 映射到文件系统位置通过 Apache 的配置。为此,您必须使用指令Alias语法为:

别名 [URL 路径]文件路径|目录路径

请注意mod_alias是必需的,但它默认随 Apache2 一起提供。您可以通过以下方式检查它是否已安装:

sudo apache2ctl -M | grep alias

别名可用于目录和文件。它也可以用于两个级别:

  • 服务器级别(在/etc/apache2/apache2.conf或 在 中) - 每个活动的虚拟主机都可以使用别名;/etc/apache2/conf-avaliable/myAlias.conf
  • VHost 级别(在;标签之间) - 别名仅适用于当前 VirtualHost。/etc/apache2/sites-avaliable/someVH.conf<VirtualHost >

请注意,您可能需要指定<Directory>涵盖以下方面的其他部分目的地别名。别名在 <Directory>检查节之前发生,因此只有别名的目标会受到影响。

特别是,如果您正在为外部目录创建别名DocumentRoot,则可能需要明确允许访问目标目录。

以下是一些优点和缺点两种方法之一:别名和符号链接。此外检查一下评论。


示例 1:VHost 级别的别名


假设您想在 VirtualHost 级别创建一个别名,并且您的 VH 配置文件是/etc/apache2/sites-available/000-default.conf。在这种情况下,配置文件应该如下所示:

<VirtualHost *:80>

    # other VirtualHost directives

    Alias /foobar /home/znorg/foobar
    <Directory /home/znorg/foobar>
        Require all granted
    </Directory>

</VirtualHost>

不要忘记重新启动(或重新加载)服务器:

sudo systemctl restart apache2.service


示例 2:服务器级别名


假设您想在服务器级别创建别名,但又不想触碰apache2.conf。在这种情况下,您必须创建并启用一个附加配置文件。在我们的示例中foobarAlias.conf,该文件为 ,必须放置在 目录中/etc/apache2/conf-available/

您可以通过以下方式创建此文件(使用 ctrl+o 保存,使用 ctrl+x 退出):

sudo nano /etc/apache2/conf-available/foobarAlias.conf

其内容看起来应该是这样的:

Alias /foobar /home/znorg/foobar
<Directory /home/znorg/foobar>
    Require all granted
</Directory>

不要忘记启用新配置并重新启动(或重新加载)服务器:

sudo a2enconf foobarAlias && sudo systemctl restart apache2.service

答案2

基于@George 的评论,这对我有用:

  1. /var/www/html在所需目录中创建符号链接:

    sudo ln -s /home/$USER/foobar /var/www/html/foobar
    
  2. 复制模板配置文件:

    sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/foobar.conf
    
  3. 然后在中foobar.conf搜索类似以下的行:

    DocumentRoot /var/www/html
    

并替换/var/www/html/home/znorg/foobar

  1. 启用新配置:

    sudo a2ensite foobar
    
  2. 重新加载服务器:

    service apache2 reload
    

希望这对其他人有用。

相关内容