2012-08-14 82 views
0

我有一個網站,我想禁用文件執行的某些擴展名僅用於該文件夾。禁用文件夾內的文件執行.htaccess規則

EG:www.yoursite.com/cache/test.php

應該不會被執行。

我試過這段代碼:

<FilesMatch "\.(htaccess|htpasswd|ini|phps|fla|psd|log|sh|zip|exe|pl|jsp|asp|htm|sh|cgi|py|php)$"> 
    Order Allow,Deny 
    Deny from all 
</FilesMatch> 

但這停在我的網站的功能。

我只想將此規則應用於緩存文件夾內,但我不能將.htaccess文件放在裏面,因爲此文件夾會定期清除。

回答

3

您只需將.htaccess文件放入該特定的緩存文件夾中即可。

.htaccess文件提供了一種方法,使在每個目錄配置更改。

Apache HTTP Server Tutorial: .htaccess files

配售該規則在.htaccess文件在您網站的根將使你的整個網站的規則。


如果你想要這個規則必須從緩存文件夾以外的啓用,你可能想嘗試在主.htaccess文件這一規則 -

RewriteEngine On 
RewriteRule ^cache/.*\.(htaccess|htpasswd|ini|...)$ /access_denied.php 

規則測試,看看所請求的文件的

  • URL與cache/
  • 包含任何列出的文件擴展名的開始(用分離管道字符)

如果這些條件都滿足時,它傳遞的是調用腳本access_denied.php在那裏你可以顯示相應的錯誤信息。

+0

但是當我清理該文件也被刪除緩存文件夾 是有任何其他的規則可以禁用這種執行 – 2012-08-14 10:11:14

+0

看到我的更新... – Lix 2012-08-14 10:20:28

4

嘗試加入這行來你根.htaccess文件:

RewriteRule ^cache/.*\.(htaccess|htpasswd|ini|phps?|fla|psd|log|sh|zip|exe|pl|jsp|asp|htm|sh|cgi|py)$ - [F] 

該標誌將導致顯示403 Forbidden錯誤

+2

這一個運作平平。但請確保將它放在RewriteCond%{REQUEST_FILENAME}!-d和RewriteCond%{REQUEST_FILENAME}!-f之前,否則現有文件仍將被執行 – Swayok 2013-09-06 13:37:30

相關問題