【发布时间】:2014-10-12 15:23:43
【问题描述】:
我目前正在创建一个用 PHP 编写的项目,并且有很多文件,例如类、过程等,我不希望任何人可以直接从 URL 访问。 我考虑过使用表单的 .htaccess 设置:
Order Deny,Allow
Deny from all
我想知道这样的设置是否能解决问题,我也想知道是否有其他方法可以使用。谢谢。
【问题讨论】:
我目前正在创建一个用 PHP 编写的项目,并且有很多文件,例如类、过程等,我不希望任何人可以直接从 URL 访问。 我考虑过使用表单的 .htaccess 设置:
Order Deny,Allow
Deny from all
我想知道这样的设置是否能解决问题,我也想知道是否有其他方法可以使用。谢谢。
【问题讨论】:
您要查找的内容需要一个所谓的“路由器”和将所有请求重定向到一个索引的规则,例如“入口”文件。
然后您必须将路线分成几个部分,构建逻辑并将其与可能存储在路线文件中的有效路线列表进行比较。
这种行为通常与使用 MVC 模式的 PHP 框架配对。
你应该在谷歌上搜索“php route mvc”,你会找到如何构建这些的教程。
不过,一个好的开始是如上所述将所有请求重定向到一个特定文件。
您可以使用 htaccess,它看起来像这样:
RewriteEngine On
Options -Indexes
RewriteRule .* index.php [L]
这将为每个 url 调用前面的 index.php 文件,无论它是否指向现有文件。
然后,您的索引文件应包含一个逻辑,以使用诸如 $_SERVER["REQUEST_URI"] 之类的服务器变量提取您的 URL 并对其进行分析,然后在内部重定向或更好地包含您希望通过此 url 显示的内容。
【讨论】:
例如,对我来说,最好的方法是使用您所说的 .htaccess 或使用 FileZilla。您可以更改对文件/文件夹的访问权限。
或者您可以为您设置一个$_SESSION['access']。
不要忘记通知您不希望通过 robots.txt 附加这些文件
Disallow: /your_folder/
Disallow: /your_file
【讨论】:
您可以使用 .htaccess 阻止对某些文件的访问
<Files ~ "\.(ext)$">
Order allow,deny
Deny from all
</Files>
希望它有效
我担心通过阻止直接访问文件可能会导致意想不到的结果。
【讨论】:
最好将它们从您的网络服务器的公共根目录中移出,而是使用公共中的专用加载器类引用它们(并且只包含来自 ../ 等)
将敏感的控制器和文件存储在 Web 根目录中不是明智之举。
【讨论】: