簡體   English   中英

RewriteRule禁止用於空的請求URI

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

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