用於服務器對文件夾的控制javascript
官方解釋爲 :分佈式配置文件 ,提供了針對目錄改變配置的方法;php
項目能夠有多個這樣的配置文件,子目錄文件會覆蓋父目錄的配置css
在apache(這裏泛指服務器)中,/conf/vhost/xx.conf文件配置中html
在 AllowOverride 設置爲 None 時, .htaccess 文件將被徹底忽略。java
當此指令設置爲 All 時,全部具備 ".htaccess" 做用域的指令都容許出如今 .htaccess 文件中。apache
官方對此給予了一段建議 : 不建議使用此文件瀏覽器
如下是一些使用方法---來自百度文庫緩存
怎樣利用.htaccess文件
- 瀏覽: 4342
- |
- 更新: 2010-11-18 13:42
加入雜誌安全
網站巧妙利用.htaccess文件,一共8種方法。
步驟/方法
-
1
禁止對無索引文件的目錄進行文件列表展現
默 認狀況下,當咱們訪問網站的某個無索引文件(如index.html,index.htm或index.php)目錄時,服務器會顯示該目錄的文件和子目 錄列表,這是很是危險的,由於它可能暴露網站的內部結構,也許不當心就將含有敏感信息的文件公之於衆了,爲了禁止這種行爲,咱們能夠在網站根目錄建立一 個.htaccess文件,內容以下:
-
2
建立重定向或改變丟失文件的響應狀態
當咱們從服務器請求一個找不到的文件時,默認狀況下服務器會返回404狀態碼,瀏覽器和訪問者便知道URL指定的位置找不到該文件,但這是一個通用的消息,沒有太大的實際意義,咱們但願告訴瀏覽器和訪問者更多有用的信息,如:
◆文件被永久移走
狀態碼301告訴瀏覽器文件已經被永久移動到另外一個位置,這樣咱們就能夠經過.htaccess文件實現重定向了,例如,使用下面的代碼能夠將瀏覽器重定向到新的地址:
Redirect 301 /path/from/htaccess/file.html http://www.domain.tld/path/file.html
◆文件被暫時移走
狀態碼307告訴瀏覽器文件已經被移走,但這是暫時的,瀏覽器接收到301狀態碼時就會訪問新地址,但不用改變文件的連接,也不會爲新地址建立緩存(除非它受Cache-Control或過時頭信息字段控制),瀏覽器每次都會繼續請求源地址。
Redirect 307 /path/from/htaccess/file.html http://www.domain.tld/path/file.html
◆文件不存在
狀態碼410告訴瀏覽器,它請求的文件已經從服務器上永久刪除,和404不同,404僅僅表示文件不在這裏的意思,而410表示文件不只不在這裏,在其它地方也沒有。
-
3
建立自定義錯誤響應頁面
若是不向瀏覽器返回狀態碼,咱們能夠建立本身的錯誤頁面,咱們能夠建立一個自定義錯誤頁面,例如,對於401狀態碼咱們能夠建立一個未經受權的錯誤頁面,對於404狀態碼,咱們能夠建立一個未找到錯誤頁面,咱們須要作的就是修改.htaccess文件,添加下面兩行代碼:
-
4
給不一樣類型的文件設置緩存過時時間
這個設置告訴瀏覽器保持文件的緩存多長時間,在未過時前,訪問該文件時就不用向服務器發起請求了,服務器向瀏覽器返回文件時,會附加上一個Expires頭信息。
咱們可使用ExpiresDefault指令後面跟一個基礎時間+時間長度設置文件的默認過時時間,使用ExpiresByType指令後面跟一個文件類型+基礎時間+時間長度指定特定文件類型的過時時間。
基礎時間能夠是訪問時間,它從瀏覽器請求該文件時開始計數,也能夠是修改時間,它從文件最後一次修改時間開始計數,注意,若是你使用修改時間,返回給瀏覽器的動態內容不會加上Expires頭,如動態生成的圖像,由於非已存在的文件不存在修改時間。
過時時間要和基礎時間結合使用,經過添加一個plus和一個時間,這個時間能夠給出年、月、日,時、分、秒,若是咱們只使用一個單位,可使用單數表示,例如,咱們能夠指定它爲「1分鐘」或「10分鐘」。
在下面的例子中,我使用ExpiresDefault指令將全部文件的默認過時時間設爲1天,而後使用ExpiresByType指令爲不一樣文件類型指定過時時間。
-
5
文件發送到瀏覽器以前先壓縮
任何現代瀏覽器都能處理服務器壓縮過的文件,這樣作也是爲了減小頁面的載入時間,若是服務器默認沒有開啓文件壓縮功能,咱們能夠經過.htaccess文件來開啓。
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/x-javascript application/rss+xml application/atom_xml text/javascript
注意,我這裏沒有爲圖像文件開啓壓縮,由於咱們的圖像文件已經經過其它壓縮技術處理好了。
-
6
給文件夾設置密碼保護
爲了保護含有敏感數據的特殊文件夾,咱們須要建立一個包含有效的用戶名和密碼的文件,而後在.htaccess文件中添加一些設置,但用戶名和密碼仍然是以明文形式發送到服務器的,所以很容易受到中間人攻擊,除非咱們使用SSL。
首 先,咱們建立一個名爲.htpasswd的文件,將權限修改成600(只有文件全部者有讀寫權),這樣其餘用戶纔不能訪問。建立好文件後,咱們須要向這個 文件注入用戶名和密碼,若是你使用Linux或Unix類操做系統,使用htpasswd命令就能夠辦到,若是你能經過SSH登錄到你的服務器,那麼你可 以使用htpasswd管理.htpasswd文件中的用戶名和密碼,若是不行,還有不少在線工具能夠幫助你生成.htpasswd文件中使用的密碼。
使 用下面的命令能夠向這個文件中注入用戶名和密碼:如:它會提示你輸入密碼,而後他會加密密碼並保存到.htpasswd文件中。若是Apache是安裝在 除Windows,Netware和TPF(一種IBM大型機)外的任何系統上,默認狀況下下,它會調用crypt()函數加密密碼。使用這個命令咱們可 以建立多個用戶,並能夠修改已有用戶的密碼,你可使用-n參數得到加密後的密碼字符串值。它會返回相似下面這樣的字符串:而後用文本編輯器打 開.htpasswd文件,將上面返回的內容粘貼到文件中,每行表明一個用戶。
還可使用-m參數調用md5加密方法加密密碼,在Windows,Netware和TPF下,默認就使用的是md5加密,也能夠適應-s參數調用SHA加密,使用-d參數告訴命令調用crypt函數,在大多數系統上,這也是默認的行爲。
若是文件不存在,則添加-c參數,它會建立文件,若是文件已經存在,添加這個參數後就會重寫整個文件,只留下新建立的用戶,若是想刪除.htpasswd文件中的某個用戶,使用-D參數。
最後,咱們能夠和其它命令結合使用,若是加入參數-b,咱們能夠直接在命令中加上密碼,但這樣作是不安全的。
htpasswd .htpasswd juan randompassword
建立好用戶後,他們就能夠訪問這個目錄及其子目錄了,但咱們還須要在要保護的文件夾下添加一個.htaccess文件,內容以下:
這 裏的AuthName指的是要求你輸入用戶名和密碼時的提示信息,AuthType表示須要的認證類型,在這個例子中,我只想彈出一個對話框,要求輸入用 戶名和密碼,所以設置爲Basic,AuthUserFile指的是保存用戶名和密碼的文件位置,在這個例子中指的是.htpasswd文件,位置和咱們 的.htaccess文件相同,Require valid-user指定只有.htpasswd文件包含的合法用戶才能訪問。
-
7
將HTML文件當PHP文件使
爲了將html擴展名文件看成php文件使用,須要在.htaccess文件中添加下面的內容:這樣服務器就會把HTML文件做爲PHP文件進行解析。
-
8
修改PHP設置
如 果咱們不能訪問php.ini文件,有些主機服務商容許咱們修改.htaccess文件來改變一些PHP設置,例如,我想生成所上傳圖片的縮略圖,有些主 機服務商默認將PHP的內存限制爲2MB,顯然要生成縮略圖是不夠用的,所以我要將這個限制改大一點,如增長到16MB,若是要移除內存限制,能夠將其設 爲-1。
爲了在.htaccess文件中修改PHP設置,服務器必須啓用了AllowOverride Options(或AllowOverride all)選項,若是那樣,咱們只須要在.htaccess文件中添加下面一行命令便可: