假设我有以下目录结构:
/
/opt
/opt/lampp
/opt/lampp/htdocs/
/opt/lampp/htdocs/...
/opt/lampp/htdocs/.../project
然后在project/
目录中,我有以下目录结构:
project/
project/.htaccess
project/index.php
project/dashboard.php
project/theme.css
project/...
project/subdir-1
project/subdir-1/...
project/subdir-2
project/subdir-2/...
project/subdir-3
project/subdir-3/...
我在project/.htaccess
写什么来允许访问project/
目录中的所有文件,但拒绝访问所有子目录(即subdir-*
)和每个子目录中的所有文件?目录
这是我到目前为止所做的:
htaccess的
# Deny access by default
Order deny,allow
Deny from all
# Allow access to all PHP/CSS files in current directory
<Files ~ "[^/]\{0,}\.(php|css)$">
Allow from all
</Files>
我基本上试图允许访问所有PHP / CSS文件,但文件名中包含'/'
的文件除外;但结果是我无法访问任何内容。实现这一目标的正确方法是什么?
此外,是否有一种跨平台的方法(即,它可以在UNIX / Linux和Windows服务器上运行)?
答案 0 :(得分:3)
要拒绝访问/ project文件夹的所有子目录,可以在 project / .htaccess 中使用以下mod-rewrite规则:
RewriteEngine on
#if the request is for existent dirs, forbid the request
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [R=403,L]
如果您请求存在目录,则返回403错误响应。
如果要对两个文件/目录执行此操作,可以使用以下重定向
RedirectMatch 403 /project/.+/.*$