.htaccess是apache伺服器的乙個非常強大的分布式配置檔案。
正確的理解和使用.htaccess檔案,可以幫助我們優化自己的伺服器或者虛擬主機。
以windows為例,進入apache/conf目錄,找到httpd.conf檔案,去掉
loadmodule rewrite_module modules/mod_rewrite.so
前面的#,然後設定目錄屬性allowoverride all,重啟apache即可
下面是乙個典型的htaccess檔案
# 開啟url重寫rewriteengine on
# url重寫的作用域
# rewritebase /path/to/url
# 滿足怎樣的條件
rewritecond % !^www\.example\.com$ [nc]
# 應用怎樣的規則
rewriterule .? [r=301,l]
來看看rewritecond,首先有乙個%,因為是乙個apache變數,需要用%來指示。從!開始就是匹配的條件,支援 正則。!表示不等於,這句話的意思就是:如果http_host不是www.example.com。後面的[nc](no case)表示忽略大小寫,常見的還有
防盜煉
由於是基於http_referer的驗證,所以只能防止一般的盜鏈,因為http_referer是比較容易偽造的
自定義404錯誤頁面
如果使用者輸入了乙個不存在的url,那麼就顯示自定義的錯誤頁面
errordocument 404 /404.html# 其他同理
errordocument 500 /500.html
處理移動過的檔案
redirect 301 /old.html# 也可以是下面這樣
rewriterule /old.html [r=301,l]
# 如果想隱式跳轉(url位址不變,但實際上內容是其他url的),就使用下面的
rewriterule /old.html [l]
對於rewriterule還有好多文章可以做,比如
# 把html字尾的url鏈結到php檔案# $1指代的是前面第1個用括號括起來的內容
rewriterule ^/?([a-z/]+)\.html$ $1.php [l]
# 或者把舊資料夾的內容鏈結到新資料夾
rewriterule ^/?old_directory/([a-z/.]+)$ new_directory/$1 [r=301,l]
# 隱藏檔名
rewriterule ^/?([a-z]+)$ $1.php [l]
如果目錄裡沒有index檔案,又沒有對該目錄做過特別的處理,尤其是windows主機,那麼該目錄裡的內容就會顯示出來,這時可以在根目錄建立 乙個.htaccess檔案,然後寫上
options -indexes# 就這麼一句就搞定了
阻止/允許特定ip/ip段
# 禁止所有ip,除了指定的order deny,allow
deny from all
# 如果想允許ip段,如123.123.123.0 ~ 123.123.123.255,則
# allow from 123.123.123.
allow from 123.123.123.123
errordocument 403 /page.html
allow from all
#如果想禁止特定ip
deny from 123.123.123.123
新增mime型別
apache重寫htaccess檔案 問題
php模組方式重寫 options followsymlinks rewriteengine on rewritecond d rewritecond f rewriterule index.php 1 qsa,pt,l ifmodule php由fastcgi模式重寫格式 options foll...
用 htaccess檔案實現URL重寫
你是否曾經對一些 的 看起來非常清爽,沒有任何.php或.html字尾感到奇怪?他們就是這樣做到的。1 安裝 mod rewrite 模組 因為 apache 伺服器預設是沒有開啟 mod rewrite 模組的,所以我們必須手動來啟動。開啟 apache 的配置檔案 httpd.conf 檔案,找...
PHP實現url重寫和 htaccess
htaccess是乙個完整的檔名 只有字尾 它是用於apache伺服器下的配置檔案,當.htaccess檔案放在某一資料夾下,它僅對該資料夾下的檔案和資料夾有效。通過.htaccess檔案,可以配置伺服器實現很多功能,比如錯誤定位,密碼保護,ip拒絕,url重寫等等。預設的apache不支援.hta...