我想在 apache 中设置一个别名,如下所示:
我这样做:
<VirtualHost *:80>
DocumentRoot /var/www/html/
Alias "/deploy/" "/var/www/deploy/"
<Directory "/var/www/deploy/">
Require all granted
</Directory>
</VirtualHost>
这里是文件夹:
[root@asd]# ls -lisaR /var/www/deploy/
/var/www/deploy/:
total 4
125 0 drwxr-xr-x 2 apache apache 23 Jan 9 13:20 .
8887786 0 drwxr-xr-x 5 root root 47 Jan 9 13:19 ..
148408 4 -rw-r--r-- 1 apache apache 19 Jan 9 13:17 index.php
[root@asd]#
我总是收到 404 错误。错误内容如下:
未找到 该服务器上未找到请求的 URL /deploy。
答案1
如果您使用的是 Apache 2.4.19 或更高版本,您只需在配置文件中写入:
<VirtualHost *:80>
DocumentRoot /var/www/html/
Alias "/deploy/"
<Directory "/var/www/deploy/">
Require all granted
</Directory>
</VirtualHost>
你还应该验证mod_alias已启用,输入sudo a2enmod mod_alias 如果仍然不能解决你的问题,你可以尝试使用mod_rewrite:
<VirtualHost *:80>
ServerName undesired.example.com
ServerAlias example.com notthis.example.com
Redirect "/" "http://www.example.com/"
</VirtualHost>
示例来源自:https://httpd.apache.org/docs/2.4/rewrite/remapping.html
答案2
我正在使用 Apache 2.4.25。
您可以列出可用的模块:
ls /etc/apache2/mods-available/
列表已启用模块:
ls /etc/apache2/mods-enabled
我加载别名模块像这样:
a2enmod alias
然后正如提到的费利佩斯的回答,使用类似以下内容的内容更新虚拟主机文件......
<VirtualHost *:80>
DocumentRoot /var/www/html/
Alias "/foo/" "/var/www/foo/"
<Directory "/var/www/foo/">
Require all granted
</Directory>
</VirtualHost>
现在重新加载 apache2 以反映对虚拟主机文件所做的更改:
systemctl reload apache2