![](/img/trans.png)
[英]Block index.php everywhere except in the root directory with .htaccess
[英]How to block access to all .php except index.php in root folder (via .htaccess)?
注意:此問題已經多次被問過,但答案非常糟糕,完全錯誤和/或不符合上述情況(因為有幾個名為index.php的文件)。 如果您願意,請參閱[ 1 ]。
我想阻止通過根文件夾中的.htaccess文件直接訪問應用程序文件夾中的所有.php文件(請參閱文件結構圖像)。 網上有一些解決方案,但他們錯過了一件事: 如果有多個名為index.php的文件,它們就不起作用(這是一個逼真的場景,如截圖所示,請參閱視圖中的文件/ xxx /文件夾):
在.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.