●自定義錯誤頁php
.htaccess的一個應用是自定義錯誤頁面,這將使你能夠擁有本身的、個性化的錯誤頁面(例如找不到文件時),而不是你的服務商提供的錯誤頁或沒有任何頁面。這會讓你的網站在出錯的時候看上去更專業。你還能夠利用腳本程序在發生錯誤的時候通知你(例如當找不到頁面的時候自動Email給你)。html
你所知道的任何頁面錯誤代碼(像404找不到頁面),均可以經過在.htaccess文件里加入下面的文字將其變成自定義頁面:
ErrorDocument errornumber /file.html
舉例來講,若是個人根目錄下有一個notfound.html文件,我想使用它做爲404 error的頁面:
ErrorDocument 404 /notfound.html
若是文件不在網站的根目錄下,你只須要把路徑設置爲:
ErrorDocument 500 /errorpages/500.html
如下是一些最經常使用的錯誤:
401 – Authorization Required 須要驗證
400 – Bad request 錯誤請求
403 – Forbidden 禁止
500 – Internal Server Error 內部服務器錯誤
404 – Wrong page 找不到頁面
接下來,你要作的只是建立一個錯誤發生時顯示的文件,而後把它們和.htaccess一塊兒上傳。瀏覽器
●.htaccess命令安全
一、禁止顯示目錄列表
有些時候,因爲某種緣由,你的目錄裏沒有index文件,這意味着當有人在瀏覽器地址欄鍵入了該目錄的路徑,該目錄下全部的文件都會顯示出來,這會給你的網站留下安全隱患。
爲避免這種狀況(而沒必要建立一堆的新index文件),你能夠在你的.htaccess文檔中鍵入如下命令,用以阻止服務器
目錄列表的顯示:
Options -Indexes網站
二、阻止/容許特定的IP地址
某些狀況下,你可能只想容許某些特定IP的用戶能夠訪問你的網站(例如:只容許使用特定ISP的用戶進入某個目錄),或者想封禁某些特定的IP地址(例如:將低級用戶隔離於你的信息版面外)。固然,這隻在你知道你想攔截的IP地址時纔有用,然而如今網上的大多數用戶都使用動態IP地址,因此這並非限制使用的經常使用方法。
你可使用如下命令封禁一個IP地址:
deny from 000.000.000.000
這裏的000.000.000.000是被封禁的IP地址,若是你只指明瞭其中的幾個,則能夠封禁整個網段的地址。如你輸入210.10.56.,則將封禁210.10.56.0~210.10.56.255的全部IP地址。
你可使用如下命令容許一個IP地址訪問網站:
allow from 000.000.000.000
被容許的IP地址則爲000.000.000.000,你能夠象封禁IP地址同樣容許整個網段。
若是你想阻止全部人訪問該目錄,則可使用:
deny from all
不過這並不影響腳本程序使用這個目錄下的文檔。ui
三、替換index文件
也許你不想一直使用index.htm或index.html做爲目錄的索引文件。舉例來講,若是你的站點使用PHP文件,你可能會想使用 index.php來做爲該目錄的索引文檔。固然也沒必要侷限於「index」文檔,若是你願意,使用.htaccess你甚至可以設置 foofoo.balh來做爲你的索引文檔!
這些互爲替換的索引文件能夠排成一個列表,服務器會從左至右進行尋找,檢查哪一個文檔在真實的目錄中存在。若是一個也找不到,它將會把目錄列表顯示出來(除非你已經關閉了顯示目錄文件列表)。
DirectoryIndex index.php index.php3 messagebrd.pl index.html index.htmspa
四、重定向(rewrite)
.htaccess 最有用的功能之一就是將請求重定向到同站內或站外的不一樣文檔。這在你改變了一個文件名稱,但仍然想讓用戶用舊地址訪問到它時,變的極爲有用。另外一個應用(我發現的頗有用的)是重定向到一個長URL,例如在個人時事通信中,我可使用一個很簡短的URL來指向個人會員連接。如下是一個重定向文件的例子:
Redirect /location/from/root/file.ext http: //minidx.com/new/file/location.xyz
上述例子中,訪問在root目錄下的名爲oldfile.html能夠鍵入:
/oldfile.html
訪問一箇舊次級目錄中的文件能夠鍵入:
/old/oldfile.html
你也可使用.htaccess重定向整個網站的目錄。假如你的網站上有一個名爲olddirectory的目錄,而且你已經在一個新網站http: //minidx.com/newdirectory/上創建了與上相同的文檔,你能夠將舊目錄下全部的文件作一次重定向而沒必要一一聲明:
Redirect /olddirectory http: //minidx.com/newdirectory
這樣,任何指向到站點中/olddirectory目錄的請求都將被從新指向新的站點,包括附加的額外URL信息。例若有人鍵入:
http: //minidx.com/olddirecotry/oldfiles/images/image.gif
請求將被重定向到:
http: //minidx.com/newdirectory/oldfiles/images/image.gif
若是正確使用,此功能將極其強大。htm
2、.htaccess文件的書寫blog
在網站根目錄下創建一個文件,名稱是.htaccess,書寫方式:
RewriteEngine on #開啓重寫
RewriteRule ^/$ index.php #表示用「/」就能夠訪問index.php
RewriteRule ^about_(d*)/$ about/about.php?id=$1 #表示可使用about_22/訪問到about/about.php?id=22頁面。注意$前面的「/」
RewriteRule ^about_(d*).html$ about/about.php?id=$1 #表示可使用about_22.html訪問到about/about.php?id=22頁面RewriteRule ^news_(d*)_(d*).html$ news/news.php?id=$1&page=$2 #表示可使用news_11_2.html訪問到news/news.php?id=11&page=2頁面。$1表示第一個參數,$2表示第二個參數
從上面能夠看出,若是咱們有下面的連接
<a href="/about_22/">關於咱們</a>
那麼咱們訪問到的頁面與使用下面訪問的頁面同樣
<a href="/about/about.php?id=22">關於咱們</a>
其實,用前一種訪問方式最終仍是會隱式轉換成後一種方式,只是在地址欄不顯示罷了