我刚刚在我的Ubuntu 14.04发行版上配置了LAMP堆栈,并希望将.htaccess
设置为服务网站。
我按照教程https://www.digitalocean.com/community/tutorials/how-to-use-the-htaccess-file为我的域配置了一个虚拟主机,但是我仍然无法在我的项目根目录中使用.htaccess文件,每当我尝试提供一个页面时,我得到{{1 }}
我的域的404 error
文件如下:
.conf
我尝试将 <VirtualHost *:80>
ServerAdmin alexmk92@live.co.uk
ServerName alexsims.me
ServerAlias www.alexsims.me
DocumentRoot /var/www/alexsims.me
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/alexsims.me>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
更改为AllowOverride None
,但即使在启用AllowOverride All
后也会导致内部500错误。
此致 亚历克斯。
编辑:mod_rewrite
内容
.htaccess
答案 0 :(得分:3)
我对Ubuntu 15.10也有同样的问题。
我解决了这个问题。首先,您需要启用重写模块:
sudo a2enmod rewrite
sudo gedit /etc/apache2/apache2.conf
并替换
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
使用:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
最后
sudo service apache2 reload
实际上restart
和reload
之间有什么区别!
restart= stop + start
reload = remain running + re-read configuration files.
我们更改了配置,因此我们需要重新加载配置。
它可以帮助某人,因为我浪费了4个小时:))
答案 1 :(得分:2)
尝试
Require all granted
取代
Order allow,deny
allow from all
有关详细信息,请参阅upgrade documentation:
在2.2中,访问控制基于客户端主机名,IP地址等 客户请求的特征是使用指令完成的 订单,允许,拒绝和满足。
在2.4中,这种访问控制的方式与其他方式相同 授权检查,使用新模块mod_authz_host。老人 访问控制习语应该由新的身份验证替换 机制,虽然为了兼容旧配置, 提供了新模块mod_access_compat。
答案 2 :(得分:1)
AllowOverride None
那是你的问题,就在那里。您获得的500错误可能意味着您的.htaccess
文件格式错误 - 开始
请参阅http://httpd.apache.org/docs/current/mod/core.html#allowoverride
答案 3 :(得分:1)
您应该检查您在.htaccess中使用的指令是否已启用。
例如,如果您使用RewriteEngine,则应启用apache模块重写:
cat /etc/apache2/mods-available/rewrite.load
a2enmod rewrite
service apache2 restart
对于ExpiresActive指令,您应该启用apache module expires:
cat /etc/apache2/mods-available/expires.load
a2enmod expires
service apache2 restart
等