Php htaccess阻止对目录的访问,但允许对文件的访问

Php htaccess阻止对目录的访问,但允许对文件的访问,php,zend-framework,.htaccess,apache2,directory,Php,Zend Framework,.htaccess,Apache2,Directory,我有这样的情况。 我正在Zend框架和htaccess中开发应用程序,将每个请求指向 index.php。如果请求路径上存在某些文件或目录,则htaccess允许访问这些文件,如css、js、图像等 现在我有了这样的链接: example.com/profile/martin-slicker-i231 使用Zend Router,它指向控制器帐户和操作视图配置文件。我想为我的用户添加一些头像,我在公用文件夹中创建了一个目录(这样图像就可以被css和js等服务器访问)。目录名为“profile”,

我有这样的情况。 我正在Zend框架和htaccess中开发应用程序,将每个请求指向 index.php。如果请求路径上存在某些文件或目录,则htaccess允许访问这些文件,如css、js、图像等

现在我有了这样的链接:

example.com/profile/martin-slicker-i231

使用Zend Router,它指向控制器帐户和操作视图配置文件。我想为我的用户添加一些头像,我在公用文件夹中创建了一个目录(这样图像就可以被css和js等服务器访问)。目录名为“profile”,其中的子目录为“martin-slicker-i231”。服务器可以看到所有路径,如下所示:

public/
  .htaccess
  index.php
  profile/
    martin-slicker-i231/
      avatar-small.jpg
问题是当我将浏览器指向example.com/profile/martin-slicker-i231 it时 将我指向此目录,而不是控制器和操作。当我与用户一起删除文件夹时,流将转到控制器并执行操作。如何配置.htaccess,使example.com/profile/martin-slicker-i231指向控制器和操作,但请求example.com/profile/martin-slicker-i231/avatar small.jpg指向文件。这是我的.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

有人能帮忙吗?

根据Apache文档,下面将关闭目录列表

<Directory /path/to/directory>
   Options -Indexes
</Directory>

选项-索引

您可能还想查看mod_autoindex的文档,只需删除表示它应该服务于目录的部分:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l 
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

现在它将直接提供文件(大小>0)和符号链接,但将目录引用和其他URL发送到应用程序

这会导致500个内部服务器错误。我只更改了目录的路径是的!!!非常感谢你。它起作用了。我还注意到,当我只使用以下条件时:RewriteCond%{REQUEST_FILENAME}-f它也可以工作。我不知道哪条路更好,但谢谢你。服务目录的部分在oryginal Zend Framework.htaccess文件中,所以我希望这不会破坏任何东西。因为这是正确的答案,您应该通过选择旁边的复选标记来接受它。不确定为什么您没有为此获得分数或接受。它帮了我很多+1@Marcin-看起来下面的答案帮助了你。。。也许你应该接受它是正确的??