[英]Mod-rewrite lock execution of PHP files and access to .git folder
我想使用mod-rewrite阻止所有文件的執行,除了文檔根目錄中的bootstrap.php文件之外,我還想阻止對.git文件夾(也位於文檔根目錄)中所有文件的訪問。 另一個(可能是更好的解決方案)是只允許訪問名為public(在我的應用程序的不同部分中有多個目錄,稱為public)的目錄內的文件,拒絕直接訪問任何其他文件,同時通過我的引導程序引導所有其他請求。 php文件。 這就是我所擁有的。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /bootstrap.php
RewriteCond %{REQUEST_FILENAME} -fd
RewriteRule .*\.php /denied.php
RewriteCond %{REQUEST_FILENAME} -fd
RewriteRule \.git /denied.php
任何建議,不勝感激。
不允許對文件的條件使用多重驗證,如果這樣使用,將給您帶來錯誤,例如bad flag delimiters
:
RewriteCond %{REQUEST_FILENAME} !-fd
所以會是這樣的:
Options +FollowSymLinks -MultiViews
RewriteEngine On
# not a existent file
RewriteCond %{REQUEST_FILENAME} !-f
# and not a folder
RewriteCond %{REQUEST_FILENAME} !-d
# and not a symbolic link
RewriteCond %{REQUEST_FILENAME} !-l
# and not bootstrap.php or denied.php
RewriteCond %{REQUEST_FILENAME} !(bootstrap.php|denied.php)$
# redirect to /bootstrap.php
RewriteRule .* /bootstrap.php
# is a existent file
RewriteCond %{REQUEST_FILENAME} -f [OR]
# or directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
# or symbolic link
RewriteCond %{REQUEST_FILENAME} -l
# and not bootstrap.php or denied.php
RewriteCond %{REQUEST_FILENAME} !(bootstrap.php|denied.php)$
# contains .php or .git + anything else redirect to /denied.php
RewriteRule \.(php|git)/?.*$ /denied.php
您也可以使用F
標志代替它向客戶端瀏覽器返回403 FORBIDDEN響應。
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteCond %{REQUEST_FILENAME} !(bootstrap.php|denied.php)$
RewriteRule \.(php|git)/?.*$ - [F]
限制訪問某些文件夾的常用方法是將自己的.htaccess文件放入該文件夾中,並使用以下代碼將該文件放入該文件中
Order Allow,Deny
Deny from all
這樣可以防止訪問整個文件夾(以及該文件夾內的所有文件夾)(從Web /互聯網)。
因此,我想如果您要在主文件夾中使用此文件並對其進行修改,以使其僅允許一個文件夾存儲所有“公共訪問的文件”(例如,圖像和.css),那將是最好的解決方案您。
您可以允許一個這樣的文件夾
Order Allow,Deny
Allow /onefoldername
Deny from all
這將阻止從Web訪問除名為“ onefoldername”的文件夾以外的任何內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.