访问没有扩展名的文件时出现.htaccess 404错误

时间:2017-03-03 17:22:06

标签: .htaccess http-status-code-404

我有这个简单的htaccess文件应该将每个请求带到index.php?site =

问题是,当htaccess的文件夹中有文件(如test.php)且url是domain.com/test时,它会抛出标准的“404 not found”错误。

我该如何解决这个问题?

content

谢谢!

2 个答案:

答案 0 :(得分:0)

你所要做的就是

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?site=$1 [QSA,L]
  

删除RewriteBase /

否则,它将重定向到您的根文件夹。

例如:

        

但是当您添加 RewriteBase / 时,它会重定向到 http://127.0.0.1/index.php?site=abc ,请将其删除

答案 1 :(得分:0)

对于2019年来到这里的人们,我遇到了同样的问题。 原因是来自Apache的Mod协商,当启用多视图时,行为如下:

  

如果服务器收到对/ some / dir / foo的请求并且/ some / dir / foo不存在,则服务器读取目录以查找所有名为foo。*的文件,并有效地伪造了一个类型映射,该类型映射命名所有这些文件,为其分配相同的媒体类型和内容编码(如果客户端按名称请求其中之一)。然后,它选择最符合客户要求的匹配项,并返回该文档。

http://httpd.apache.org/docs/2.4/mod/mod_negotiation.html#multiviews

您可以按照以下步骤在.htaccess中禁用多视图选项:

Options -MultiViews

或者在您的apache配置文件中(如果已授予):

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