一開始,我想在重寫規則裡直接禁止php字尾的url被訪問。但後來發現重寫規則是遞迴呼叫的,如果在重寫規則裡直接禁止php,那麼重寫到php檔案的規則也會失效。rewriteengineon
rewriterule^test$/test.php[l]
rewriterule^test.php$$0[f,l]
遞迴呼叫這真可怕,一開始訪問/test的時候url重寫檢查一次,然後匹配到^test$就內部重定向到/test.php,然而內部重定向也會觸發url重寫,因此再次檢查,匹配到^test.php$,被強制直接[f](forbidden)操作,所以就變成了403錯誤。既然這樣,就必須判是否已經經過伺服器重定向。這時候伺服器變數裡有個redirect_url可以使用,因此我試著用這個做判斷。
rewriteengineon
rewriterule^test$/test.php[l]
rewritecond%^$
rewriterule.*$0[f,l]這樣寫訪問/test依舊被403,稍微檢查下,發現rewritecond中%永遠為空,這就蛋疼了,這樣的話在重寫規則中沒辦法直接禁止php了。但是可以用不怎麼華麗的方法實現。就是在php檔案中去判斷redirect_url,雖然這個方法可以實現,但是感覺很遜,只是目前為止也沒找到什麼更好的辦法了。
$_server['redirect_url']ordie('forbidden');
//這裡只是顯示文字而已,實際使用的時候還需輸出的http錯誤**。
echo$_server['redirect_url'];//成功訪問顯示資訊
?>
把這段php**修改下丟進全域性引用裡就基本上沒啥問題了,雖然不是完美解決,但是至少還是解決了,以後也許會發現更好的方法。
Apache下禁止特定目錄執行PHP,提高安全性
之前在博文 從php安全講dedecms的安全加固 中說過在php安全中保護 可寫目錄下的檔案不允許被訪問到的重要性,還提出了改名資料夾的方式來保護該目錄。如果用的是apache伺服器,還可以通過配置來禁止該目錄下的php檔案的訪問,有兩種方式 方式一 htaccess控制,適用於沒有伺服器管理許可...
Apache下實現禁止目錄瀏覽
當我們訪問某個 時,在後面增加相應的目錄,就可以瀏覽到目錄,對於 來說,是很不安全的。解決辦法 1 編輯httpd.conf檔案 找到如下內容 b b possible values for the options directive are none all or any combination ...
LAMP 2 5 Apache禁止解析php
某個目錄下禁止解析 php,這個很有用,我們做 安全的時候,這個用的很多,比如 某些目錄可以上傳檔案,為了避免上傳的檔案有木馬,所以我們禁止這個目錄下面的訪問解 析 php.安裝目錄下有個data目錄,檢視一下他的許可權。apache執行的使用者就是daemon。屬主改成daemon因為在daemo...