![](/img/trans.png)
[英]REQUEST_URI is not overridden by using APACHE RewriteRule?
[英]RewriteRule forbidden for empty Request URI
我正在嘗試編寫.htaccess
規則以拒絕訪問所有子文件夾中的所有.php
文件,但允許訪問子目錄之一中的一個文件,並且還對該文件使用RewriteRule
,如果Request URI
不為空,則它可以工作,但是當我訪問/
顯示禁止
我現在有 :
<Files ~ "\.(php)$">
deny from all
</Files>
<Files Test.php>
allow from all
</Files>
Options +FollowSymLinks
Options All -Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /Sub/Test.php [QSA]
如何使其按預期工作?
這是因為當您請求/
,它將被映射到index.php
或您的索引文件所在的任何位置,然后此條件將失敗:
RewriteCond %{REQUEST_FILENAME} !-f
您可以添加其他條件或 'ed條件,以通過以下方式也允許/
請求:
RewriteCond %{REQUEST_URI} ^/$ [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /Sub/Test.php [QSA]
實際上,僅用2條規則就可以輕松處理所有.php
阻塞。 考慮以下代碼:
RewriteEngine On
# block any request with `.php
RewriteCond %{THE_REQUEST} \s/.+?\.php[\s?] [NC]
RewriteRule ^ - [F]
# send all non-file, non-dir requests to /Sub/Test.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.+$ /Sub/Test.php [L]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.