我正在尝试保护我的PHP文件免受直接访问。我想要允许的是直接访问index.php
和名为public
的目录(使用CSS,图像等)。对根目录/
的访问权限应重定向到index.php
:
/ (root): allow -> redirect to index.php
+--index.php: allow
+--public
| +--... allow
+--[everything else]: block
我当前的.htaccess
文件如下所示:
order allow,deny
<Files index.php>
Allow from all
</Files>
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>
DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/$ /index.php [L]
</IfModule>
它基本上有效,但不会从/
重定向到index.php
,而是Apache给我403错误。我做错了什么?
答案 0 :(得分:1)
查看Order ...
的文档,您可以找到here。
允许,拒绝强>
首先,评估所有Allow指令;至少一个必须匹配,或 请求被拒绝。接下来,评估所有Deny指令。如果 任何比赛,请求被拒绝。最后,任何没有的请求 匹配允许或拒绝指令默认被拒绝。
/
的请求与任何规则都不匹配,因此没有允许或拒绝指令,因此默认情况下会被拒绝。您通过明确允许/
请求,并在公共子目录中创建新的.htaccess文件来允许请求来修复它。
在/.htaccess
:
order allow,deny
<Files ~ "^(index\.php|)$">
Allow from all
</Files>
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>
DirectoryIndex index.php
在/public/.htaccess
:
Order allow,deny
Allow from all
此工作的截屏视频:https://www.screenr.com/BLfN