簡體   English   中英

如何阻止訪問除根文件夾中的index.php之外的所有.php(通過.htaccess)?

[英]How to block access to all .php except index.php in root folder (via .htaccess)?

注意:此問題已經多次被問過,但答案非常糟糕,完全錯誤和/或不符合上述情況(因為有幾個名為index.php的文件)。 如果您願意,請參閱[ 1 ]。

我想阻止通過根文件夾中的.htaccess文件直接訪問應用程序文件夾中的所有.php文件(請參閱文件結構圖像)。 網上有一些解決方案,但他們錯過了一件事: 如果有多個名為index.php的文件,它們就不起作用(這是一個逼真的場景,如截圖所示,請參閱視圖中的文件/ xxx /文件夾):

問題:如何阻止訪問除根文件夾中的index.php之外的所有.php文件?

在此輸入圖像描述

在.htaccess中:

RewriteEngine on
RewriteRule ^/application - [F]

[F]選項指示它對所有匹配的URL發出403 Forbidden響應。

或者在/application中添加一個單獨的.htaccess文件,其中包含:

deny from all

或者在Apache vhost定義中:

<Location /application>
  deny from all
</Location>

除了Niels Keurentjes的 優秀答案,我想根據我的.htacces擴展他的解決方案,它使用一些非常常見的重寫模式(因為很多人可能遇到同樣的問題):

使用URL重寫規則時,行RewriteRule ^/application - [F]必須恰好位於該位置 如果在前面或下面放置線,它將無法工作:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

# The new line, blocking direct access to every file in /application and deeper
RewriteRule ^/application - [F]

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM