在Ubuntu 12.04上使用Apache2启用htaccess错误

6

我尝试启用htaccess。我做了以下更改:

<Directory /var/www/abc.biz/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

致:

<Directory /var/www/abc.biz/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

但是我收到了500(内部服务器)错误。为什么?
以下是我的/etc/apache2/sites-available/default文件:
<VirtualHost *:80>
ServerAdmin admin@abc.biz

DocumentRoot /var/www/abc.biz
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /var/www/abc.biz/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

我们能否看到您的.htaccess文件? mod_rewrite已启用吗? 您是否检查了Apache错误日志? - Havelock
执行一个<super>日志并打开日志文件查看器,然后将/var/log/apache2/error.log添加到日志文件列表中(如果这是一个开发系统,则添加access.log和rewrite.log)。现在,您可以使用GUI检查错误日志,并且会感到非常舒适。 - TerryE
谢谢。我尝试启用mod_rewrite并成功了。 - Thuong Nguyen
1个回答

5
我认为你需要修改/etc/apache2/sites-available/default文件中的这一部分。
DocumentRoot /var/www/abc.biz
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /var/www/abc.biz/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

to

DocumentRoot /var/www/abc.biz
<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>
<Directory /var/www/abc.biz/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

因为一开始使用 <Directory /> AllowOverride All,你允许通过你的 .htaccess 文件覆盖整个 Apache 的设置,但是你还需要在 <Directory /var/www/abc.biz/> AllowOverride All 中更改它,以针对您特定的主机目录,在那里放置了您的网站。 此外,您应该检查放置在 /var/www/abc.biz 目录中的 .htaccess 文件是否编写正确,因为当您启用 .htaccess 文件来覆盖全局 Apache 设置时,错误的 .htaccess 文件会导致此类错误。

2
在Ubuntu 13.10中,它是 /etc/apache2/sites-available/000-default.conf! - Hardik Thaker
是的,因为Ubuntu 13.10使用Apache 2.4。除了000-default已被重命名为000-default.conf之外,您还会发现<Directory />设置不再存在。现在它们似乎都在/etc/apache2/apache.conf中。 - Joseph
重要提示:对于Apache 2.4,您不应使用Order allow,denyallow from all行(只需将它们删除)。而是使用Require all granted(来自http://stackoverflow.com/a/18407768/368896)。 - Dan Nissenbaum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接