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

时间:2015-03-16 12:28:27

标签: apache .htaccess mod-rewrite

我正在尝试保护我的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错误。我做错了什么?

1 个答案:

答案 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