.htaccess文件没有被读取(“.htaccess文件中的选项 – 索引”不起作用)

我只用下面一行创build了一个.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的build议,并在.htaccess文件中添加了乱码,并发现.htaccess文件没有被读取。

您应该检查Apache配置是否允许执行.htaccess。 在你的虚拟主机配置中,应该有一行:

AllowOverride All

如果没有,这就是为什么.htaccess没有生效。

为了达到这个目的,我在/etc/apache2/httpd.conf (默认安装了Apache的时候是一个零长度文件),然后重新启动了Apache。 现在, Options -Indexes .htaccess文件中的.htaccess工作正常。 这是最低限度的工作要求:

/etc/apache2/httpd.conf :

 <VirtualHost *:80> DocumentRoot /var/www <Directory / > </Directory> </VirtualHost> 

lanzz建议在.htaccess文件中添加一段乱码,看看是否正在读取,这有助于诊断问题。

请注意,根据Evan Mulawski的评论, AllowOveride默认为All ,所以在上面最小的一组httpd.conf行中不需要。

我有同样的问题。 我正在使用一个虚拟主机,所以我修改了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"> 。 这是我使用的样本中的默认值。

由于不再有httpd.conf文件,你需要在VPS上做什么:

  1. 转到/etc/apache2/sites-enabled/
  2. ls为您正在寻找的网站找到文件
  3. 使用nano THE_CONF_FILE编辑相应的文件,或者使用任何你想要的编辑器
  4. 将所有在<Directory> ... </Directory>看到的AllowOverride None值更改为AllowOverride All
  5. 保存该文件并关闭它

  6. 现在,您需要通过运行以下命令启用模块重写: sudo a2enmod rewrite

  7. 最后要激活新的配置,你需要运行: service apache2 restart

它现在就像一个魅力工作!

如果你有

 AllowOverride None 

将其更改为:

 AllowOverride All 

在你的httpd.conf文件里或者在/etc/apache2/sites-available/…conf里默认的虚拟主机文件中

我通过编辑文件/etc/http/conf/httpd.conf在RHEL上解决了这个问题

 AllowOverride None 

 AllowOverride All 

您也可以在RHEL上通过以下命令检查httpd.conf AllowOverride

 grep -i AllowOverride /etc/conf/conf/httpd.conf 

此外,除了将AllowOverride All更改为vhost配置文件之外,还可能需要在.htaccess文件的开头添加以下内容:

 RewriteEngine On RewriteBase / 

否则可能仍然没有检测到重写或重定向。