我正在设置 Apache2 Web 服务器,由于某种原因,它不提供文件服务,因此我可以通过 Web 浏览器访问它们。
文档根目录设置正确,文件归 www-data 所有(与 apache 作为环境变量运行相同)。
如果我尝试通过 ....com/hello.txt 访问该文件,我会得到:
Not Found
The requested URL /hello.txt was not found on this server.
Apache/2.4.25 (Debian) Server at ....... Port 80
我的配置文件(删除了一些注释行):
<VirtualHost *:80>
#serverName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /srv/www/linuxvm232b/public
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
#Include conf-available/serve-cgi-bin.conf
<Directory "/srv/www/linuxvm232b/public">
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
目录列表:
root@linuxvm232:/etc/apache2/sites-available# ll /srv/www/linuxvm232b/public/
total 14
drwxr-xr-x 2 www-data www-data 6 Mar 4 14:58 assets
-rwxr-xr-x 1 www-data www-data 0 May 11 21:10 hello.txt
-rwxr-xr-x 1 www-data www-data 907 Mar 4 14:58 index.html
drwxr-xr-x 2 www-data www-data 4 Mar 4 14:58 src
root@linuxvm232:/etc/apache2/sites-available#
答案1
正如我从你的屏幕截图中看到的,你正在使用 /srv 目录来提供你的文件,据我所知,这不是 Debian 上的默认方式。
确保检查 /etc/apache2/apache2.conf 是否允许 apache 服务器访问 /srv 目录,因为在标准配置中,禁止访问该目录。
它应该是这样的注释条目:
#<Directory /srv/>
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>
只需取消注释该块并重新加载 apache2 via,
systemctl reload apache2
/srv 中的目录就应该能够访问。
另请确保已通过以下方式启用该网站a2ensite linuxvm232b
:systemctl reload apache2