找不到 Apache Alias 文件

找不到 Apache Alias 文件

我想在 apache 中设置一个别名,如下所示:

http://example.com/deploy

我这样做:

<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

相关内容