程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> .htaccess入門教程

.htaccess入門教程

編輯:PHP基礎知識
 

Apache服務器的.htaccess是一個非常強大的分布式配置文件,學會使用.htaccess,對虛擬主機用戶來說,可以實現眾多的功能。這裡有一篇很容易讓人理解的.htaccess介紹,作為入門文章非常的適合。

 

  • 第一節 簡介

本文簡單介紹了關於.htaccess文件及其功能的知識,可以用來優化您的網站(SEO優化等)。.htaccess是Apache的一個配置文件,用於在不重啟服務器的情況下修改部分服務器設置參數。例如,最常用的功能是創建自定義的“404 錯誤”頁面。.htaccess 使用起來也相當簡單,只需要在網站根目錄放置一個.htaccess的文件,添加幾行代碼就可以了。更加深入的學習請參見筆者寫的另一篇文章《.htaccess rewrite 規則詳細說明》

  1. 我的主機是否支持.htaccess?
    理論上講,所有Linux&Unxi下的Apache服務器均支持.htaccess設置。不過,最終決定權在於提供服務的空間商,你可以咨詢空間商客服,或者自己測試一下,方法很簡單,在網站根目錄下的.htaccess文件中寫入:

     

    //將所有請求都重定向到指定域名
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} ^.*$
    RewriteRule ^.*$ http://www.cnphp.info [R=301,L]

    如果重定向成功,恭喜,你的主機支持.htaccess設置

  2. 使用.htaccess能做什麼?
    可以做很多事情啦,包括:

     

    • 文件夾密碼保護
    • 用戶自動重定向
    • 自定義錯誤頁面
    • 改變你的文件擴展名
    • 封禁特定IP地址的用戶
    • 只允許特定IP地址的用戶
    • 禁止目錄列表
    • 使用其他文件作為默認的index文件
  3. 如何自定義錯誤頁面?
    首先,我想向大家介紹一下如何在.htaccess中設置自定義錯誤頁面,做為一個入門的例子,相當簡單。
    ErrorDocument HTTP響應代碼 /file.html
    如果用戶訪問了一個不存在的頁面,那麼我可以把他轉到一個頁面,告訴他,這個頁面不存在,這樣作非常友好;同時,搜索引擎也很喜歡,對SEO很有幫助哦!
    ErrorDocument 404 /nofound.html
    將/notfound.html 編輯好放在根目錄下就可以了,自己動手做好後試試看效果?
    常用的響應代碼有:

     

    • 401 – Authorization Required 需要驗證
    • 400 – Bad request 錯誤請求
    • 403 – Forbidden 禁止
    • 500 – Internal Server Error 內部服務器錯誤
    • 404 – Wrong page 找不到頁面
  • 第二節 .htaccess 命令

  1. 禁止目錄列表
    如果目錄下沒有index(如:index.htm)文件,Apache默認情況下會顯示該目錄下所有文件的列表,這會給你的網站留下安全隱患。為避免這種情況出現,要麼把所有目錄都加上index文件(如果目錄多,就很麻煩了)。可以在.htaccess使用如下指令,以阻止目錄列表的顯示,很方便吧^_^:
    Options -Indexes
  2.  阻止/允許特定的IP地址
    網站有時難免會遭到一些來意不明的用戶侵擾,防范這些用戶的最好辦法之一就是禁止某些IP地址訪問網站;或者,基於一些特殊原因,你可能只想允許某些特定IP的用戶可以訪問你的網站(例如:只允許使用特定IP用戶進入某個目錄),或者想封禁某些特定的IP地址(例如:將未經IP授權的用戶隔離於你的信息版面外)。當然,這只在你知道你想攔截的IP地址時才有用,然而現在網上的大多數用戶都使用動態IP地址,所以這並不是限制使用的常用方法。
    在.htaccess中可以使用如下指令禁止一個IP地址訪問:
    deny from 000.000.000.000
    這裡的000.000.000.000是被禁止的IP地址,如果你只指明了其中的幾個,則可以禁止整個網段的地址訪問。如你輸入”114.11.128.” ,則將禁止114.11.128.0~114.11.128.255的所有IP地址訪問。
    那麼如何允許一個IP地址訪問網站呢?命令也很簡單
    allow from 000.000.000.000
    被允許的IP地址則為000.000.000.000,你可以象封禁IP地址一樣封禁整個網段。
    如果你想阻止所有人訪問該目錄,則可以使用:
    deny from all
    不過這並不影響腳本程序使用這個目錄下的文檔。
  3. 替換index文件
    也許你不想一直使用index.htm或index.html作為目錄的索引文件。舉例來說,如果你的站點使用PHP文件,你可能會想使用index.php來作為該目錄的索引文檔。當然也不必局限於“index”文檔,如果你願意,使用.htaccess你甚至能夠設置foofoo.balh來作為你的索引文檔!
    這些互為替換的索引文件可以排成一個列表,服務器會從左至右進行尋找,檢查哪個文檔在真實的目錄中存在。如果一個也找不到,它將會把目錄列表顯示出來(除非你已經關閉了顯示目錄文件列表)。
    DirectoryIndex index.php index.php3 messagebrd.pl index.html index.htm
  4. 重定向
    .htaccess最有用的功能之一就是將請求重定向到同站內或站外的不同文檔。這在你改變了一個文件名稱,但仍然想讓用戶用舊地址訪問到它時,變的極為有用。另一個應用(我發現是很有用的)是重定向到一個長URL,例如在我的時事通訊中,我可以使用一個很簡短的URL來指向我的會員鏈接。以下是一個重定向文件的例子:
    Redirect /location/from/root/file.ext

     

    http://www.othersite.com/new/file/location.xyz上述例子中,訪問在root目錄下的名為oldfile.html可以鍵入:

    /oldfile.html
    訪問一個舊次級目錄中的文件可以鍵入:
    /old/oldfile.html
    你也可以使用.htaccess重定向整個網站的目錄。假如你的網站上有一個名為olddirectory的目錄,並且你已經在一個新網站 http://www.newsite.com/newdirectory/上建立了與上相同的文檔,你可以將舊目錄下所有的文件做一次重定向而不必一一聲明:
    Redirect /olddirectory http://www.newsite.com/newdirectory
    這樣,任何指向到站點中/olddirectory目錄的請求都將被重新指向新的站點,包括附加的額外URL信息。例如有人鍵入:

    http://www.youroldsite.com/olddirecotry/oldfiles/images/image.gif

    請求將被重定向到:

    http://www.newsite.com/newdirectory/oldfiles/images/image.gif

    如果正確使用,此功能將極其強大。

  • 第三節 密碼保護

    盡管有各種各樣的.htaccess用法,個人認為最有用之一就是用它來設置網站目錄的密碼保護。盡管JavaScrip等也能做到,但只有.htaccess具有完美的安全性(即訪問者必須知曉密碼才可以訪問目錄,並且絕無“後門”可走)。

  1. 使用.htaccess進行密碼保護
    利用.htaccess將一個目錄加上密碼保護分兩個步驟。第一步是在你的.htaccess文件中插入如下代碼,再將.htaccess文檔放進你要保護的目錄下:

     

    AuthName “Section Name” #用戶名
    AuthType Basic #認證方式
    AuthUserFile /full/path/to/.htpasswd #密碼文件
    Require valid-user

  2. 使用.htpasswd存放用戶名和密碼
    目錄的密碼保護比.htaccess的其他功能要麻煩些,因為你必須同時創建一個包含用戶名和密碼的文檔,用於訪問你的網站,相關信息(默認)位於一個名為.htpasswd的文檔裡。像.htaccess一樣,.htpasswd也是一個沒有文件名且具有8位擴展名的文檔,可以放置在你網站裡的任何地方(此時密碼應加密),但建議你將其保存在網站Web根目錄外,這樣通過網絡就無法訪問到它了。
  3. 設定用戶名和密碼
    創建.htpasswd的方法有兩種。
    一種使用命令行工具:htpasswd,對於Linux系統一般放在/usr/bin下,Windows下放在Apache的Bin目錄下(htpasswd.exe),命令如下(我只列出常用的幾個選項):

     

    htpasswd -c passwordfile username
    htpasswd -b passwordfile username password
    htpasswd -D passwordfile username
    -c 創建一個密碼文件,並增加一個用戶
    -b 增加一個用戶
    -D 刪除一個用戶

    另一種方式是手動創建:創建好.htpasswd文檔後(可以通過文字編輯器創建),下一步是輸入用於訪問網站的用戶名和密碼,應為:
    username:password
    “password”的位置應該是加密過的密碼。提供一個很不錯的username/password加密服務網站KxS,可以輸入用戶名及密碼,然後生成正確格式的密碼。
    對於多用戶,你只需要在.htpasswd文檔中新增同樣格式的一行即可。另外還有一些免費的腳本程序可以方便地管理.htpasswd文檔,可以自動新增/移除用戶等。

  4. 如何訪問有密碼保護的網站
    當你試圖訪問被.htaccess密碼保護的目錄時,你的浏覽器會彈出標准的username/password對話窗口。如果你不喜歡這種方式,有些腳本程序可以允許你在頁面內嵌入username/password輸入框來進行認證,你也可以在浏覽器的URL框內以以下方式輸入用戶名和密碼(未加密的):http://username:[email protected]/directory/
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved