我尝试通过 .htaccess 文件使用 mod_rewrite,但遇到了一个大问题,.htaccess 文件似乎无法读取。该机器运行的是 Debian 5.0,并使用稳定的 apache2 包。
我已按照此页面上的说明进行操作:http://www.debian-administration.org/articles/136. 像这样启用 mod_rewrite:
a2enmod rewrite
在我的 /etc/apache2/apache2.conf 文件中我添加了以下内容:
<Directory "/var/www">
AllowOverride ALL
Options FollowSymLinks
</Directory>
在根目录中,我创建了一个 .htaccess 文件,其内容如下:
RewriteEngine on
RewriteRule ^test$ foo.html
我尝试了很多类似问题的答案中的建议,但都无济于事。访问 foo.com/test 时收到的错误消息是 404 页面未找到。所有文件都可以被所有人读取。直接访问 foo.html 时没有问题。我还尝试将垃圾放入另一个 .htaccess 中,看看 apache 是否会对此抱怨,但什么都没有改变。也许我太累了!
谢谢
答案1
如果您在访问包含垃圾的 .htaccess 文件的目录时没有收到 500 错误,则 Apache 没有读取您的 .htaccess 文件。
您是否在 /etc/apache2/sites-available/default 文件(或用于虚拟主机的任何文件)中定义了一个站点,该站点覆盖了该目录的 AllowOverride All 定义?
答案2
当您尝试调用“test”时,检查错误文件 /var/log/apache2/error.log,检查是否与正确的目录匹配。
答案3
我的 apache 服务器没有读取 htaccess,这也是一个问题,我发现我没有设置:
<Directory "YOUR_DIRECTORY">
AllowOverride ALL
</Directory>
在我的 httpd.conf 目录中。但是我这样做了,并重新启动了 apache
apachetcl -k restart
htaccess 工作正常。