php 文件不允许访问,php – htaccess阻止访问目录但允许访问文件

在开发Zend Framework应用时,遇到一个问题:.htaccess将所有请求重定向到index.php,导致直接访问像example.com/profile/martin-slicker-i231这样的路径时指向控制器,而非实际存在的目录。解决方案是修改.htaccess,使其能区分文件请求和路由请求。通过删除处理目录的部分,现在当请求指向文件(如avatar图片)时,将直接提供文件,而路径指向控制器和动作。这确保了正确处理URL并提供正确的资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有这样的情况.

我正在开发Zend Framework中的应用程序,htaccess指向每个请求

index.php文件.如果请求路径上存在某个文件或目录,则htaccess允许访问此文件,如css,js,images等…

现在我有这样的链接:

example.com/profile/martin-slicker-i231

使用Zend Router,它指向控制器帐户和操作viewprofile.我想为我的用户添加一些avatart,并在公共文件夹中创建目录(因此服务器可以访问图像,如css和js).该目录名为“profile”,其中的子目录是“martin-slicker-i231”.服务器可以看到所有路径:

public/

.htaccess

index.php

profile/

martin-slicker-i231/

avatar-small.jpg

问题是当我将浏览器指向example.com/profile/martin-slicker-i231时

我指的是这个目录而不是控制器和动作.当我用用户删除文件夹时,流程将转到控制器和操作.如何配置.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]

有人可以帮忙吗?

解决方法:

只需删除说应该提供目录的部分:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s [OR]

RewriteCond %{REQUEST_FILENAME} -l

RewriteRule ^.*$- [NC,L]

RewriteRule ^.*$index.php [NC,L]

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

标签:php,folder,htaccess,apache2,zend-framework

来源: https://codeday.me/bug/20190630/1338288.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值