我创建了一个.htaccess文件,其中只有下面一行:
选项-索引
但是,仍会显示目录的索引。
我刚刚安装了Apache 2,并使用了所有默认值(我没有修改apache2.conf或httpd.conf)。
操作系统:Ubuntu 12.04 (Precise Pangolin)
Apache 2版本: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
文件没有被读取。
8条答案
按热度按时间oyt4ldly1#
您应该检查Apache配置是否允许执行.htaccess。在您的虚拟主机配置中,应该有一行:
AllowOverride All
如果没有,这就是为什么.htaccess没有生效。
zzzyeukh2#
为了让它正常工作,我在
/etc/apache2/httpd.conf
(安装Apache时默认为零长度文件)中添加了以下内容,然后重新启动Apache。现在.htaccess
文件中的Options -Indexes
可以正常工作了。下面是让它正常工作所需的最低要求:/etc/apache2/httpd.conf :
lanzz建议在
.htaccess
文件中添加一行胡言乱语,以查看是否正在读取它,这对诊断问题很有帮助。请注意,根据Evan Mulawski的注解,
AllowOveride
默认为All
,因此在上面的httpd.conf
行的最小集合中不需要它。k5ifujac3#
我也遇到了同样的问题。我使用的是虚拟主机,所以我修改了httpd-vhosts.conf,如果您使用的是虚拟主机,这可能会有所帮助
在配置主机时,将目录标记引用为与文档根相同
我需要
AllowOverride All
来识别.htaccess文件。修改
我还需要在目录标记本身中添加站点根目录的路径,即
<Directory "C:/Websites/htdocs/yoursite">
。这是我使用的示例中的默认设置。enxuqcxy4#
由于不再有
httpd.conf
文件,您需要在VPS上执行以下操作:1.转到
/etc/apache2/sites-enabled/
1.执行
ls
以查找您要查找的网站的文件1.使用
nano THE_CONF_FILE
或任何您喜欢的编辑器编辑相应的文件1.将在不同
<Directory> ... </Directory>
中看到的所有AllowOverride None
值更改为AllowOverride All
1.保存文件并关闭
1.现在,您需要通过运行以下命令来启用模块重写:
sudo a2enmod rewrite
1.最后,要激活新配置,您需要运行:
service apache2 restart
它现在会像符咒一样起作用的!
tnkciper5#
如果您有
将其更改为:
在httpd.conf中或在/etc/apache 2/sites-available/... conf中默认虚拟主机文件中
xkrw2x1b6#
我通过编辑文件
/etc/http/conf/httpd.conf
在RHEL上解决了此问题结束日期
您也可以通过RHEL上的以下命令检查httpd.conf AllowOverride
vsikbqxv7#
此外,除了将AllowOverride All更改为vhost配置文件之外,您可能还需要在.htaccess文件得开头添加以下内容:
否则,可能仍无法检测到重写或重定向。
hwazgwia8#
一个人的htaccess文件没有被读取的另一个原因是现有的htaccess强制HTTPS 301重定向,浏览器然后缓存,这可能是一个问题,如果虚拟主机没有正确配置。完整的解释如下。
例如,如果你在Apache和XAMPP中设置虚拟主机,当你第一次启动虚拟主机的URL时,如果你有一个带有HTTPS 301重定向的htaccess文件,你的浏览器会被重定向到你的虚拟主机的HTTPS版本。但是这有一个潜在的问题。如果你没有在你的Apache vhosts配置文件中显式地设置一个 *:433虚拟主机,Apache会默认使用列出的第一个虚拟主机。
根据这个默认虚拟主机的内容,可能无法区分发生了什么,用户将疯狂地试图确定为什么对htaccess文件的更改不再被处理。
确定发生了什么情况后,解决方法是禁用任何HTTPS重定向,重新启动并在没有HTTPS的情况下重试。真实的的解决方案是使用证书完成完整的虚拟主机443设置。