2015-06-17 41 views
1

我有一個問題。我想給一個客戶FTP訪問我網店的CSS文件夾。我試圖阻止在這個文件夾中運行PHP,但它不工作。我認爲我的問題是,我不想在css文件夾中添加另一個.htaccess。我必須使用主目錄中的.htaccess文件來處理這個問題。不允許php執行CSS文件夾從父文件夾使用htaccess

我想這

RewriteRule ^css/*\.php$ /404.php [NC,L] 

...但它不工作。我的服務器正在執行css文件夾中的php文件。 有人知道我可以如何防止執行位於子文件夾中的PHP文件?更好的解決方案是,只允許特定文件夾中的文本/ css。

信息:使用Plesk的Im。

+0

'/ *'表示「0或更多斜線字符」。重寫使用正則表達式,而不是普通的通配符。 –

回答

2

一個更好的方式來做到這一點,只要切斷在該目錄中的PHP,如果你不想它運行......雖然被授予這將意味着additi onal .htaccess文件。然而,它也會阻止PHP運行在類似.phtml文件的任何文件中 - 我會說它比404-ing更爲萬無一失。

您可以設置PHP布爾類型設置,在.htaccess,與php_flag

在這種情況下,在相關的.htaccess文件:

php_flag engine off 

麥克Rockett指出 - 由於用戶通過對該文件夾的FTP訪問,您需要更改.htaccess文件(CHOWN)的所有權,以防止用戶篡改或刪除它。

+0

好主意,但用戶可以很容易地刪除'.htaccess'文件,因爲他可以通過FTP訪問目錄。 –

+0

@MikeRockett公平點 - 除非你* chown *文件並且否認他們訪問它 – CD001

+0

這確實也是如此。 –

2

您需要使用正則表達式,而不是通配符。更換*(.*)

RewriteEngine on 
RewriteRule ^css/(.*).php$ /404.php [NC,L] 

您可以使用以下作爲替代:但是

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{REQUEST_URI} ^/css/ 
RewriteRule (.*).php /404.php [L] 

我建議,你說清楚,對文件的訪問被拒絕:

RewriteRule (.*).php - [F,L] 
+0

謝謝。 「重寫規則(。*).php - [F,L]」是一種好方法。是可以恢復過濾器「!CSS」,而不是搜索PHP文件。 – AppGeer

相關問題