簡體   English   中英

.htaccess:將/重定向到index.php並阻止其他所有內容

[英].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.

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