【发布时间】:2013-08-13 12:45:42
【问题描述】:
我正在开发一个工具,但我被困在这一点上:我想为每个目录定义一组规则,基本上我只想要“公共”文件夹可用,并拒绝访问其他文件夹。
我的目录结构是
uapi(root)/
Application
Config
Public/
Index.php
Storage
.htaccess
这里是 .htaccess 文件
<Directory /Public>
Order Deny, Allow
Allow from all
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ Index.php/$1 [L]
</IfModule>
</Directory>
<Directory /Config>
Order Deny, Allow
Deny from all
</Directory>
<Directory /Application>
Order Deny, Allow
Deny from all
</Directory>
<Directory /Storage>
Order Deny, Allow
Deny from all
</Directory>
【问题讨论】:
-
也许可以尝试删除/注释掉
Rewrite...指令,如果可行的话,问题就在那里。 -
我查看了 access.log 和它的 kepps 说
-
一般来说,如果您可以控制服务器并且不在共享主机上,那么将这些东西放在服务器配置(httpd.conf)中会更好/更快,因为 apache 不需要寻找和在每个请求上解析 .htaccess 文件。如果你是共享主机,你会被 .htaccess 方法困住(在大多数情况下)
-
为什么不在根目录中的单个 .htaccess 文件“拒绝所有”和 /Public 文件夹中的 .htaccess 文件与“全部允许” /Public 文件夹中的 .htaccess 文件应该覆盖.htaccess 文件在根目录?这样可以避免在每个文件夹 /Application、/Config 等中都有一个 .htaccess 文件。