[英].htaccess: Redirect / to index.php and block everything else
我試圖保護我的PHP文件免遭直接訪問。 我要允許的是直接訪問index.php
和一個名為public
(帶有CSS,Images等)的目錄。 訪問根目錄/
應該重定向到index.php
:
/ (root): allow -> redirect to index.php
+--index.php: allow
+--public
| +--... allow
+--[everything else]: block
我當前的.htaccess
文件如下所示:
order allow,deny
<Files index.php>
Allow from all
</Files>
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>
DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/$ /index.php [L]
</IfModule>
它基本上可以正常工作,但是不會從/
重定向到index.php
,相反,Apache給了我403錯誤。 我究竟做錯了什么?
查看Order ...
的文檔,您可以在這里找到。
允許否認
首先,評估所有Allow指令; 至少一個必須匹配,否則請求被拒絕。 接下來,將評估所有“拒絕”指令。 如果有匹配項,則請求被拒絕。 最后,默認情況下會拒絕所有與Allow或Deny指令不匹配的請求。
對/
的請求不符合任何規則,因此沒有針對其的allow或deny指令,因此默認情況下被拒絕。 您可以通過顯式允許/
的請求並在public子目錄中創建一個新的.htaccess文件以允許該請求來解決此問題。
在/.htaccess
:
order allow,deny
<Files ~ "^(index\.php|)$">
Allow from all
</Files>
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>
DirectoryIndex index.php
在/public/.htaccess
:
Order allow,deny
Allow from all
此工作的截屏視頻: https : //www.screenr.com/BLfN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.