[英].htaccess: Redirect / to index.php and block everything else
我试图保护我的PHP文件免遭直接访问。 我要允许的是直接访问index.php
和一个名为public
(带有CSS,Images等)的目录。 访问根目录/
应该重定向到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错误。 我究竟做错了什么?
查看Order ...
的文档,您可以在这里找到。
允许否认
首先,评估所有Allow指令; 至少一个必须匹配,否则请求被拒绝。 接下来,将评估所有“拒绝”指令。 如果有匹配项,则请求被拒绝。 最后,默认情况下会拒绝所有与Allow或Deny指令不匹配的请求。
对/
的请求不符合任何规则,因此没有针对其的allow或deny指令,因此默认情况下被拒绝。 您可以通过显式允许/
的请求并在public子目录中创建一个新的.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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.