我只想将一个简单的 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 的评论,这对我有用:
/var/www/html
在所需目录中创建符号链接:sudo ln -s /home/$USER/foobar /var/www/html/foobar
复制模板配置文件:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/foobar.conf
然后在中
foobar.conf
搜索类似以下的行:DocumentRoot /var/www/html
并替换/var/www/html
为/home/znorg/foobar
启用新配置:
sudo a2ensite foobar
重新加载服务器:
service apache2 reload
希望这对其他人有用。