找不到.htaccess重写文件

时间:2016-05-30 15:39:41

标签: apache .htaccess redirect mod-rewrite

我知道此处有很多关于此主题的问题,但我无法让.htaccess工作。

预期

应使用RewriteEngine

将所有流量重定向到/index.php

结果:

使用以下.htaccess

RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule (.*) index.php [NC,QSA,R]

我收到以下错误(使用http://localhost/foo,应该重定向到:http://localhost/index.php

The requested URL /index.php was not found on this server.

服务器/配置

ls/var/www/的输出:

drwxr-xr-x  2 www-data root 4096 May 30 16:57 .
drwxr-xr-x 19 root     root 4096 May 30 16:57 ..
-rw-r--r--  1 root     root   92 May 30 17:34 .htaccess
-rw-r--r--  1 www-data root    4 May 30 16:50 index.php

路径的配置:

<Directory /var/www/>
     Options Indexes FollowSymLinks
     AllowOverride All
     Require all granted
</Directory>

我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

您可以将以下内容与绝对目标路径一起使用:

RewriteEngine on
RewriteCond %{REQUEST_URI} !index\.php$
RewriteRule (.*) /index.php [R,L]

答案 1 :(得分:0)

首先,由于您似乎可以访问服务器配置,因此无需使用.htaccess文件。只需在Directory指令中添加重写指令。

重写规则的问题似乎是Directory和.htaccess /var/www之间的区别,但您的文档根目录是/var/www/html。要查找/index.php(请注意前导斜杠),它必须位于文档根目录/var/www/html中,而不是/var/www中。