2013-02-20 97 views
0

我的網站通過包含來自'網頁'目錄(PHP)的頁面來工作,並且我想禁止訪問該目錄中的文件。但是,當我將.htaccess文件放在那裏說:deny from all時,它禁止訪問所有文件,而不僅僅是一個請求來創建文件或使用樣式表。rewritecond檢查其腳本或客戶端

我也嘗試帶給用戶到另一個頁面,當他們嘗試看看那些文件,像這樣:

RewriteCond %{THE_REQUEST} \.php[\ /?].*HTTP/ 
RewriteRule ^.*$ index.php?path=1 [QSA] 

RewriteCond %{THE_REQUEST} \.css[\ /?].*HTTP/ 
RewriteRule ^.*$ index.php?path=1 [QSA] 

RewriteCond %{THE_REQUEST} \.js[\ /?].*HTTP/ 
RewriteRule ^.*$ index.php?path=1 [QSA] 

而且這樣的作品,它只是沒有讓樣式表/ JS被加載。它確實讓PHP文件包含在內,但沒有被查看,這很好,所以我保留了這三個中的第三個。但是我的css文件包含有關我的文件結構的信息,我不想向黑客透露。所以,我不希望這些公開可用。

反正...我的問題是:
是否有RewriteCond我可以把在前面,如果最後兩個,使它們只適用,如果請求是從客戶端來了嗎?

RewriteCond %{THE_REQUEST} IS_COMING_FROM_A_CLIENT_OR_BROWSER 
RewriteCond %{THE_REQUEST} \.css[\ /?].*HTTP/ 
RewriteRule ^.*$ index.php?path=1 [QSA] 

RewriteCond %{THE_REQUEST} IS_COMING_FROM_A_CLIENT_OR_BROWSER 
RewriteCond %{THE_REQUEST} \.js[\ /?].*HTTP/ 
RewriteRule ^.*$ index.php?path=1 [QSA] 

P.S.我寧願不通過deny from all這樣做,如果可能的話,因爲我在共享主機上,他們可能不會那樣。

+0

您如何知道何時來自客戶? – 2013-02-20 03:43:41

+0

該網站仍在開發中。我知道,因爲我把它輸入到我的地址欄中。 – KFox 2013-02-20 03:48:06

+0

嗯,我想你知道,但我的問題是試圖確定客戶的請求和其他任何之間的差異。必須有一些東西來識別傳入的URL,否則不可能用'RewriteCond'來過濾它們,而你的問題的答案將是NO。 – 2013-02-20 03:54:06

回答

0

會檢查HTTP_REFERER是否爲.php頁面以外的其他內容適用於.js和.css文件內容?