我只用下面一行创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上做什么:
/etc/apache2/sites-enabled/
ls
为您正在寻找的网站找到文件 nano THE_CONF_FILE
编辑相应的文件,或者使用任何你想要的编辑器 <Directory> ... </Directory>
看到的AllowOverride None
值更改为AllowOverride All
保存该文件并关闭它
现在,您需要通过运行以下命令启用模块重写: sudo a2enmod rewrite
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 /
否则可能仍然没有检测到重写或重定向。