我有一個PHP文件,繼承(包括)另一個PHP文件。所有繼承的文件都位於一個名爲「includes」的文件夾中。我希望能夠限制對此文件夾的任何直接訪問。只有服務器中的PHP文件可以與「includes」文件夾中的文件進行通信。我如何使用.htaccess來實現這樣的目標?.htaccess限制訪問文件夾
僅供參考,我用下面的代碼,並沒有奏效
Order deny,allow
deny from all
任何幫助將在您的理解
我有一個PHP文件,繼承(包括)另一個PHP文件。所有繼承的文件都位於一個名爲「includes」的文件夾中。我希望能夠限制對此文件夾的任何直接訪問。只有服務器中的PHP文件可以與「includes」文件夾中的文件進行通信。我如何使用.htaccess來實現這樣的目標?.htaccess限制訪問文件夾
僅供參考,我用下面的代碼,並沒有奏效
Order deny,allow
deny from all
任何幫助將在您的理解
如果你不具備實際移動選項「包括」文檔根區域以外的文件夾,並使用包含路徑(即你無法從網上得到它),然後輸入
deny from all
在該目錄中的.htaccess目錄中。
但是,替代方法是使用DEFINES指令僅允許通過特定授權文件訪問這些包含程序。例如,把
<?php defined('ACCESS_ALLOWED') or die('Restricted Access'); ?>
在包含文件的頂部,然後把
<?php define('ACCESS_ALLOWED', 1); ?>
在被允許包含這些文件的程序。
這將防止包含文件的偶然GET運行它們,並且適用於任何Web服務器,而不僅僅是那些支持htaccess文件的服務器。
包括/的.htaccess:
Order deny,allow
deny from all
試過但沒有工作 – 2011-01-06 00:13:51
可以真正地使用index.php
並使用header()
傳遞404標頭:
header('HTTP/1.1 404 Not Found', 404);
IMO,這比403好,因爲它就像文件夾不存在。而對於包括文件,把這個線以上第一include/require
行的主要文件:
define('INCLUDED', true);
而就在包括目錄中的所有文件,把這個在最上面的部分。
if (!defined(INCLUDED)) {
header('HTTP/1.1 404 Not Found', 404);
}
您可能還想調用exit();在標題之後,因爲頁面仍然可以執行。 – 2012-10-31 22:55:38
根據設定在更高層次上其他可能的選項,你可能需要使用:
Satisfy all
Order deny,allow
Deny from all
我就遇到了這個當上目錄中定義的基本認證,包括該行:
Satisfy any
這正在阻止我的否認從所有人的生效,因爲用戶被認證。
您可以在htaccess或服務器中使用以下指令拒絕直接訪問該文件夾。配置CONTEX:
MOD-別名基礎的解決方案
Redirect 403 ^/folder/.+$
這將重定向所有文件和/文件夾/ 403禁止錯誤頁面的顯示目錄。
國防部重寫基礎的解決方案:
RewriteEngine on
RewriteRule ^/?folder/.+$ - [F]
如果這不起作用,可能是因爲httpd.conf中設置爲不讀.htaccess文件。例如: <目錄 「/路徑/到/ webfiles」> 的AllowOverride無 切換到別的東西(例如設置AllowOverride所有),並重新啓動Web服務器。 – user535673 2013-04-29 10:01:09