我想拒绝访问所有子文件夹中的所有PHP文件,但允许访问特定子文件夹中的所有PHP文件(例如test
)。
我尝试了很多,但是找不到任何解决方法。
这是整个htaccess文件
<filesmatch \.(php|phtml)$>
deny from all
</filesmatch>
<filesmatch (index.php|install.php)>
allow from all
</filesMatch>
<ifmodule mod_deflate.c>
<filesmatch \.(css|js|php|phtml|svg|woff|xml)$>
setoutputfilter deflate
</filesmatch>
</ifmodule>
<ifmodule mod_security.c>
secfilterengine off
secfilterscanpost off
</ifmodule>
<ifmodule mod_rewrite.c>
rewriteengine on
rewritecond %{https} off
rewritecond %{http_host} ^www\.(.*)$ [nc]
rewriterule ^(.*)$ http://%1/$1 [r=301,l]
rewritecond %{https} on
rewritecond %{http_host} ^www\.(.*)$ [nc]
rewriterule ^(.*)$ https://%1/$1 [r=301,l]
rewritecond %{request_filename} !-d
rewriterule ^(.*)/$ /$1 [r=301,l]
rewritecond %{request_filename} -f
rewriterule ^(.*) $1 [l]
rewritecond %{request_filename} !-d
rewriterule ^([^.]*)$ ?p=$1 [l]
rewritecond %{request_filename} !-d
rewriterule ^([^.]*).([\w]{2})$ ?p=$1&l=$2 [l]
rewritecond %{request_filename} !-d
rewriterule ^([^.]*).([\w]{3,})$ ?p=$1&t=$2 [l]
</ifmodule>
<ifmodule mod_headers.c>
<filesmatch \.(gif|ico|jpg|svg|png|woff)$>
header set cache-control max-age=2419200
</filesmatch>
<filesmatch \.(css|js|swf)$>
header set cache-control max-age=604800
</filesmatch>
<filesmatch \.(phtml|xml)$>
header set cache-control max-age=600
</filesmatch>
</ifmodule>
fileetag none
谢谢!
答案 0 :(得分:0)
在我编码的系统中,我在代码中添加了以下行,我只希望它们可供我访问的人访问:
defined('AUTH') or die(header('HTTP/1.0 403 Forbidden'));
对于那些.php文件,如果我希望它们使用/访问该特定的PHP脚本,我可以通过在include()
或require()
这些文件之前将以下行添加到顶部来启动它们:< / p>
define('AUTH', true);
通过这种方式,对未定义“ AUTH”的文件的任何访问尝试都将获得HTTP403。这也禁止直接链接访问。 ;)也许该解决方案也对您有用。