我知道这是一个常见问题,主要是用户权限问题www-data
,但以下这指南我得到了经典的错误:
403 forbidden
You don't have permission to access /web on this server.
尽管很多人面临同样的问题,但我还是无法在网上找到解决方案。抱歉!:)
这是我的000-default.conf
文件
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/tom/Dropbox/web
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/tom/Dropbox/web>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /home/tom/Dropbox/web/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog home/tom/Dropbox/web/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
当然,我尝试配置本地网站的文件夹位于~/Dropbox/web
。
最后,这些是当前的权限
drwxrwxrwx 8 tom tom 4096 mars 26 09:57 Dropbox
drwxrwxrwx 3 tom tom 4096 mars 26 11:47 web
谢谢
答案1
升级到 apache 2.4.9+ 后会出现这种情况
基本上只是更换
Order allow,deny
allow from all
和
Require all granted
应该解决这个问题。
就像是,
<Directory /home/tom/Dropbox/web>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
以下是来自http://httpd.apache.org/docs/2.4/howto/access.html
如果您希望根据访问者的主机地址限制对网站部分内容的访问,最简单的方法是使用mod_authz_host。
这要求提供了多种允许或拒绝访问资源的方法。结合RequireAll,RequireAny, 和不需要指令,这些要求可以以任意复杂的方式组合,以强制执行您的访问策略。
这允许,否定, 和命令指令,由修改 mod_access_compat,已弃用并将在将来的版本中消失。您应该避免使用它们,并避免使用推荐使用它们的过时教程。