2013-02-02 140 views
0

我試圖阻止直接訪問我的網站上的所有PHP文件,除了使用htaccess的index.php。到目前爲止,我有以下代碼,但它仍然不能阻止直接訪問php文件。htaccess防止直接頁面加載

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond $1 !^(index\.php) 
RewriteRule ^(.*)$ index.php?page=$1 [L] 
</IfModule> 

我的解決方案:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond $1 !^(index\.php|.*\.css|.*\.js|.*\.png|.*\.gif|.*\.jpg) 
RewriteRule ^(.*)$ index.php?page=$1 [L] 
</IfModule> 
+1

將您不希望直接訪問的PHP文件放在服務器的Web根目錄之外。 – ceejayoz

回答

0

這是因爲這些線路:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

當你明確地告訴重寫模塊無法運行下面的規則,如果所請求的資源是文件或目錄

但是,我同意最好將它們移出網絡ro完全。

+0

但是,如果我刪除這些行,我將無法加載像「style.css」或任何圖像的文件。 –

+0

當然,你只需要改變你的匹配邏輯,不要重寫所有的文件,只需要以擴展名「.php」結尾的文件。這是一項非常簡單的任務 - 我認爲你可以把這一部分弄清楚。 –