在 Ubuntu 上用 Apache2 出现 403 Forbidden,通常是权限问题或配置问题。下面按最常见原因一步步排查和解决。
假设你的网站目录是 /var/www/html
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
✅ 说明:
www-data 是 Apache 的运行用户755644Apache 默认找:
index.html
index.php
如果没有会 403:
ls /var/www/html
没有就创建一个:
sudo nano /var/www/html/index.html
编辑你的站点配置:
sudo nano /etc/apache2/sites-available/000-default.conf
示例正确配置:
<VirtualHost *:80>
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
⚠️ 重点:
Require all granted
如果写的是:
Require all denied
就会 403
sudo a2ensite 000-default.conf
sudo systemctl restart apache2
如果你用了 .htaccess:
sudo a2enmod rewrite
sudo systemctl restart apache2
并确保:
AllowOverride All
Ubuntu 默认 AppArmor,一般不会拦,除非你改了目录。
如果你把网站放在:
/home/xxx/www
需要:
sudo chmod -R 755 /home/xxx/www
或改用 /var/www
如果目录没有 index 文件,又关了目录浏览:
Options -Indexes
会 403
解决:
Options +Indexes
sudo tail -n 50 /var/log/apache2/error.log
常见错误:
client denied by server configurationDirectory index forbidden by OptionsPermission denied把日志贴出来我可以直接帮你定位。
如果你愿意,可以把下面信息发我:
error.log 报错内容我可以直接帮你改到能访问。