我创建了一个仅包含以下行的.htaccess文件:
选项 - 索引
但是,仍会显示该目录的索引。
我刚刚安装了Apache2并使用了所有默认设置(我没有修改apache2.conf或httpd.conf)。
操作系统:Ubuntu 12.04 (Precise Pangolin)
Apache2版本:Server version: Apache/2.2.22 (Ubuntu) Server built: Feb 13 2012 01:51:56
$ ls -l .htaccess
-rwxr-xr-x .htaccess
编辑:
我接受了lanzz的建议,并在.htaccess
文件中添加了乱码,并发现.htaccess
文件未被读取。
答案 0 :(得分:45)
您应该检查Apache配置是否允许执行.htaccess。在您的虚拟主机配置中,应该有一行:
AllowOverride All
如果没有,那就是.htaccess没有生效的原因。
答案 1 :(得分:27)
为了实现这一点,我将以下内容添加到/etc/apache2/httpd.conf
(安装Apache时默认为零长度文件),然后重新启动Apache。现在Options -Indexes
文件中的.htaccess
可以按预期工作。以下是使其运行所需的最低要求:
/etc/apache2/httpd.conf :
<VirtualHost *:80>
DocumentRoot /var/www
<Directory / >
</Directory>
</VirtualHost>
lanzz建议在.htaccess
文件中添加一行乱码来查看是否正在阅读该文件有助于诊断问题。
请注意,AllowOveride
默认为All
,每Evan Mulawski个评论,因此在上面httpd.conf
行的最小集合中不需要它。
答案 2 :(得分:16)
我遇到了同样的问题。我正在使用虚拟主机,所以我修改了httpd-vhosts.conf,所以如果你使用的话,这可以帮助
在配置主机的地方,引用目录标记与文档根目录
相同<VirtualHost *:8080>
ServerName somelocalserver
DocumentRoot "C:/Websites/htdocs/yoursite"
<Directory "C:/Websites/htdocs/yoursite">
Options FollowSymLinks
AllowOverride All
</Directory>
我需要AllowOverride All
来识别.htaccess文件。
修改
我还需要在目录标记本身中添加站点根目录的路径。即<Directory "C:/Websites/htdocs/yoursite">
。这是我使用的样本中的默认值。
答案 3 :(得分:7)
由于没有httpd.conf
文件,您需要在VPS上执行的操作是:
/etc/apache2/sites-enabled/
ls
查找您要查找的网站的文件nano THE_CONF_FILE
或您想要的任何编辑器AllowOverride None
中看到的所有<Directory> ... </Directory>
值更改为AllowOverride All
保存文件并关闭
现在您需要通过运行命令启用模块重写:sudo a2enmod rewrite
service apache2 restart
它现在就像魅力一样!
答案 4 :(得分:5)
如果你有
AllowOverride None
将其更改为:
AllowOverride All
在您的httpd.conf或您的默认虚拟主机文件中 在/ etc / apache2的/网站可用/ ...的conf
答案 5 :(得分:3)
我通过编辑文件/etc/http/conf/httpd.conf
解决了RHEL上的这个问题
我改变了所有
AllowOverride None
要
AllowOverride All
您也可以通过RHEL上的命令检查httpd.conf AllowOverride
grep -i AllowOverride /etc/conf/conf/httpd.conf
答案 6 :(得分:1)
此外,除了将AllowOverride All更改为vhost配置文件之外,您可能还需要在.htaccess文件的开头添加以下内容:
RewriteEngine On
RewriteBase /
否则可能仍未检测到重写或重定向。
答案 7 :(得分:0)
另一个无法读取其htaccess文件的原因是现有的htaccess会强制实施HTTPS 301重定向,然后浏览器将其缓存,如果未正确配置虚拟主机,则可能会出现问题。完整说明如下。
例如,如果要在Apache和XAMPP中设置虚拟主机,则当您首次启动虚拟主机的URL时,如果您已有一个带有HTTPS 301重定向的htaccess文件,则浏览器将重定向到虚拟主机的HTTPS版本。但是存在潜在的问题。如果尚未为相关域显式设置*:433虚拟主机,则在Apache vhosts配置文件中,Apache将默认使用列出的第一个虚拟主机。
根据此默认虚拟主机的内容,可能无法区分正在发生的情况,用户将疯狂地尝试确定为什么不再处理htaccess文件的更改。
一旦确定发生了什么,解决方法是禁用任何HTTPS重定向并重新启动,然后在没有HTTPS的情况下重试。真正的解决方案是使用证书完成完整的虚拟主机443设置。