繁体   English   中英

.htaccess:将/重定向到index.php并阻止其他所有内容

[英].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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM