從本指南中,你將可以學(xué)習(xí)到有關(guān).htaccess文件及其功能的知識(shí),并用以優(yōu)化你的網(wǎng)站。盡管.htaccess只是一個(gè)文件,但它可以更改服務(wù)器的設(shè)置,允許你做許多不同的事情,最流行的功能是您可以創(chuàng)建自定義的“404 error”頁面。.htaccess 并不難于使用,歸根結(jié)底,它只是在一個(gè)text文檔中添加幾條簡(jiǎn)單的指令而已。
首先你要判斷主機(jī)支持它
這可能很難用簡(jiǎn)單的答案來回答。許多主機(jī)支持.htaccess,但實(shí)際上并不會(huì)特別聲明,許多其他類型的主機(jī)有能力但并不允許他們的用戶使用. htaccess。一般來說,如果你的主機(jī)使用Unix或Linux系統(tǒng),或任何版本的Apache網(wǎng)絡(luò)服務(wù)器,從理論上都是支持.htaccess的,盡管你的主機(jī)服務(wù)商可能不允許你使用它。
判斷你的主機(jī)是否允許.htaccess,一個(gè)標(biāo)志很好的是它是否支持文件夾密碼保護(hù)。為達(dá)到此功能,主機(jī)服務(wù)商需要使用.htaccess(當(dāng)然,少數(shù)情況下他們雖提供密碼保護(hù)功能,但卻并不允許你使用.htaccess)。如果你不確定自己的主機(jī)是否支持.htaccess,最好的辦法是上傳你自己的.htaccess文件看看是否有用,或者直接發(fā)送e-mail向你的主機(jī)服務(wù)商咨詢。
Apache系統(tǒng)中的.htaccess文件(或者”分布式配置文件”提供了針對(duì)目錄改變配置的方法,即,在一個(gè)特定的文檔目錄中放置一個(gè)包含一個(gè)或多個(gè)指令的文件,以作用于此目錄及其所有子目錄。作為用戶,所能使用的命令受到限制。管理員可以通過Apache的AllowOverride指令來設(shè)置。
子目錄中的指令會(huì)覆蓋更高級(jí)目錄或者主服務(wù)器配置文件中的指令。
.htaccess必須以ASCII模式上傳,最好將其權(quán)限設(shè)置為644。
.htaccess可以做大量的事情,包括:文件夾密碼保護(hù)、用戶自動(dòng)重定向、自定義錯(cuò)誤頁面、改變你的文件擴(kuò)展名、封禁特定IP地址的用戶、只允許特定IP地址的用戶、禁止目錄列表,以及使用其他文件作為index文件。
創(chuàng)建.htaccess文件也許會(huì)給你帶來一些困難。寫文件很容易,你只需要在文字編緝器(例如:寫字板)里寫下適當(dāng)?shù)拇a。真正困難的可能是文件的保存,因?yàn)?htaccess是一個(gè)古怪的文件名(它事實(shí)上沒有文件名,只有一個(gè)由8個(gè)字母組成的擴(kuò)展名),而在一些系統(tǒng)(如windows 3.1)中無法接受這樣的文件名。在大多數(shù)的操作系統(tǒng)中,你需要做的是將文檔保存成名為:“.htaccess” (包括引號(hào))。如果這也不行,你需要將其先命名為其它名字(例如htaccess.txt),再將其上傳到服務(wù)器上,之后直接使用FTP軟件來重命名。
警告
在使用.htaccess之前,我必須給你一些警告。雖然在服務(wù)器上使用.htaccess絕對(duì)不太可能給你帶來任何麻煩(如果有些東西錯(cuò)了,它只是沒效用罷了),但如果你使用Microsoft FrontPage Extensions,就必須特別小心。因?yàn)镕rontPage Extensions本身使用了.htaccess,因此你不能編輯它并加入你自己的信息。如果確實(shí)有這方面的需要(并不推薦,但是可能),你應(yīng)該先從服務(wù)器上下載.htaccess文檔(如果存在),之后在前面加上你的代碼。
2|.httacces文件的配置
我要介紹的.htaccess的第一個(gè)應(yīng)用是自定義錯(cuò)誤頁面,這將使你可以擁有自己的、個(gè)性化的錯(cuò)誤頁面(例如找不到文件時(shí)),而不是你的服務(wù)商提供的錯(cuò)誤頁或沒有任何頁面。這會(huì)讓你的網(wǎng)站在出錯(cuò)的時(shí)候看上去更專業(yè)。你還可以利用腳本程序在發(fā)生錯(cuò)誤的時(shí)候通知你(例如我使用Free Webmaster Help的PHP腳本程序,當(dāng)找不到頁面的時(shí)候自動(dòng)e-mail給我)。
你所知道的任何頁面錯(cuò)誤代碼(像404找不到頁面),都可以通過在.htaccess文件里加入下面的文字將其變成自定義頁面:
ErrorDocument errornumber /file.html
舉例來說,如果我的根目錄下有一個(gè)nofound.html文件,我想使用它作為404 error的頁面:
ErrorDocument 404 /notfound.html
如果文件不在網(wǎng)站的根目錄下,你只需要把路徑設(shè)置為:
ErrorDocument 500 /errorpages/500.html
以下是一些最常用的錯(cuò)誤:
常用的客戶端請(qǐng)求錯(cuò)誤返回代碼:
400 - Bad request 錯(cuò)誤請(qǐng)求
401 Authorization Required需要驗(yàn)證
403 Forbidden禁止
404 Not Found找不到頁面
405 Method Not Allowed
408 Request Timed Out
411 Content Length Required
412 Precondition Failed
413 Request Entity Too Long
414 Request URI Too Long
415 Unsupported Media Type
常見的服務(wù)器錯(cuò)誤返回代碼:
500 Internal Server Error內(nèi)部服務(wù)器錯(cuò)誤
接下來,你要做的只是創(chuàng)建一個(gè)錯(cuò)誤發(fā)生時(shí)顯示的文件,然后把它們和.htaccess一起上傳。
用戶可以利用.htaccess指定自己事先制作好的錯(cuò)誤提醒頁面。一般情況下,人們可以專門設(shè)立一個(gè)目錄,例如errors放置這些頁面。然后再.htaccess中,加入如下的指令:
ErrorDocument 404 /errors/notfound.html
ErrorDocument 500 /errors/internalerror.html
一條指令一行。上述第一條指令的意思是對(duì)于404,也就是沒有找到所需要的文檔的時(shí)候得顯示頁面為/errors目錄下的notfound.html頁面。不難看出語法格式為:
ErrorDocument 錯(cuò)誤代碼 /目錄名/文件名.擴(kuò)展名
如果所需要提示的信息很少的話,不必專門制作頁面,直接在指令中使用HTML號(hào)了,例如下面這個(gè)例子:
ErrorDocument 401 “你沒有權(quán)限訪問該頁面,請(qǐng)放棄!”
2.2.配置.htaccess 停示顯示目錄列表有些時(shí)候,由于某種原因,你的目錄里沒有index文件,這意味著當(dāng)有人在瀏覽器地址欄鍵入了該目錄的路徑,該目錄下所有的文件都會(huì)顯示出來,這會(huì)給你的網(wǎng)站留下安全隱患。
為避免這種情況(而不必創(chuàng)建一堆的新index文件),你可以在你的.htaccess文檔中鍵入以下命令,用以阻止目錄列表的顯示: Options -Indexes
2.3.配置.htaccess 阻止/允許特定的IP地址某些情況下,你可能只想允許某些特定IP的用戶可以訪問你的網(wǎng)站(例如:只允許使用特定ISP的用戶進(jìn)入某個(gè)目錄),或者想封禁某些特定的IP地址(例如:將低級(jí)用戶隔離于你的信息版面外)。當(dāng)然,這只在你知道你想攔截的IP地址時(shí)才有用,然而現(xiàn)在網(wǎng)上的大多數(shù)用戶都使用動(dòng)態(tài)IP地址,所以這并不是限制使用的常用方法。
你可以使用以下命令封禁一個(gè)IP地址:
deny from 000.000.000.000
這里的000.000.000.000是被封禁的IP地址,如果你只指明了其中的幾個(gè),則可以封禁整個(gè)網(wǎng)段的地址。如你輸入210.10.56.,則將封禁210.10.56.0~210.10.56.255的所有IP地址。
你可以使用以下命令允許一個(gè)IP地址訪問網(wǎng)站:
allow from 000.000.000.000
被允許的IP地址則為000.000.000.000,你可以象封禁IP地址一樣封禁整個(gè)網(wǎng)段。
如果你想阻止所有人訪問該目錄,則可以使用:
deny from all
不過這并不影響腳本程序使用這個(gè)目錄下的文檔。
改變?nèi)笔〉氖醉撐募?/p>
一般情況下缺省的首頁文件名有default、index等。不過,有些時(shí)候目錄中沒有缺省文件,而是某個(gè)特定的文件名,比如在w3sky中是 w3sky.PHP。這種情況下,要用戶記住文件名來訪問很麻煩。在.htaccess中可以輕易的設(shè)置新的缺省文件名:
DirectoryIndex 新的缺省文件名
也可以列出多個(gè),順序表明它們之間的優(yōu)先級(jí)別,例如:
DirectoryIndex filename.html index.cgi index.pl default.htm
也許你不想一直使用index.htm或index.html作為目錄的索引文件。舉例來說,如果你的站點(diǎn)使用PHP文件,你可能會(huì)想使用 index.PHP來作為該目錄的索引文檔。當(dāng)然也不必局限于“index”文檔,如果你愿意,使用.htaccess你甚至能夠設(shè)置 foofoo.balh來作為你的索引文檔!
這些互為替換的索引文件可以排成一個(gè)列表,服務(wù)器會(huì)從左至右進(jìn)行尋找,檢查哪個(gè)文檔在真實(shí)的目錄中存在。如果一個(gè)也找不到,它將會(huì)把目錄列表顯示出來(除非你已經(jīng)關(guān)閉了顯示目錄文件列表)。
DirectoryIndex index.PHP index.PHP3 messagebrd.pl index.html index.htm
(2、3樓繼續(xù))
如果不喜歡別人在他們的網(wǎng)頁上連接自己的圖片、文檔的話,也可以通過htaccess的指令來做到。
所需要的指令如下:
RewriteEngine on
RewriteCond %{ HTTP_REFERER } !^$
RewriteCond %{ HTTP_REFERER } !^http://(www.)?w3sky.com/.*$ [NC]
RewriteRule .(gif &line;jpg)$ - [F]
如果覺得讓別人的頁面開個(gè)天窗不好看,那可以用一張圖片來代替:
RewriteEngine on
RewriteCond %{ HTTP_REFERER } !^$
RewriteCond %{ HTTP_REFERER } !^http://(www.)?w3sky.com/.*$ [NC]
RewriteRule .(gif &line;jpg)$ http://www.w3sky.com/替代圖片文件名 [R,L]
這種方法,就是把yourdomain.com的流量全部301轉(zhuǎn)向到www.yourdomain.com(或者反過來)。其實(shí)對(duì)于這種方法,國外有人認(rèn)為對(duì)PageRank沒有幫助。我覺得是因?yàn)樗麄兛吹紾oogle管理員工具中有一個(gè)首選域工具,可以指定Google的爬蟲把 www.yourdomain.com或者yourdomain.com作為抓取和排名的首選域,轉(zhuǎn)向似乎就沒有必要了。但確實(shí)又有不少人證實(shí)這是有效的,反正目前還沒有人說這種方法會(huì)對(duì)SEO或者pagerank有什么損害。
在.htaccess中寫入:
Options +FollowSymlinks All -Indexes
rewriteEngine on
rewriteBase /
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
強(qiáng)制去除3w
下面以 Wordpress 為例,其它的情況,可以自己參照解決。在你的 Wordpress 目錄下通常會(huì)有一個(gè) .htaccess 文件,如果沒有,那就手動(dòng)建立一個(gè)。如果你設(shè)定了 permalink 的話,.htaccess 里面的內(nèi)容會(huì)有如下一坨:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
具體是啥意思咱就甭管它了,只管在 RewriteBase / 這行下面加上:
RewriteCond %{HTTP_HOST} ^www.yourdomain.tld$ [NC]
RewriteRule ^(.*)$ http://yourdomain.tld/$1 [R=301,L]
這樣就大功告成了。當(dāng)然要把 yourdomain.tld 換成你自己的域名。上面兩行的意思是把www.yourdomain.tld 這種形式改寫成 yourdomain.tld, 并把訪問前者的所有鏈接永久轉(zhuǎn)向到后者。
域名前強(qiáng)制加上www
如果你實(shí)在是堅(jiān)持要把 www 加在前面,我上面的算是白寫了,表示遺憾。但,你可以。只需把上面添加的兩行代碼改成這樣:
RewriteCond %{HTTP_HOST} ^yourdomain.tld$ [NC]
RewriteRule ^(.*)$ http://www.yourdomain.tld/$1 [R=301,L]
.htaccess是一個(gè)站點(diǎn)管理員可以應(yīng)用的強(qiáng)大工具,有更多的變化以適應(yīng)不同的用途,可以節(jié)約時(shí)間及提高網(wǎng)站的安全性
.htaccess的特別說明
* 啟用.htaccess,需要修改httpd.conf,啟用AllowOverride,并可以用AllowOverride限制特定命令的使用
* 如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令來改變。例如,需要使用.config ,則可以在服務(wù)器配置文件中按以下方法配置:
AccessFileName .config
* 一般情況下,不應(yīng)該使用. htaccess文件,除非你對(duì)主配置文件沒有訪問權(quán)限。有一種很常見的誤解,認(rèn)為用戶認(rèn)證只能通過.htaccess文件實(shí)現(xiàn),其實(shí)并不是這樣,把用戶認(rèn)證寫在主配置文件中是完全可行的,而且是一種很好的方法。.htaccess文件應(yīng)該被用在內(nèi)容提供者需要針對(duì)特定目錄改變服務(wù)器的配置而又沒有 root權(quán)限的情況下。如果服務(wù)器管理員不愿意頻繁修改配置,則可以允許用戶通過.htaccess文件自己修改配置,尤其是ISP在同一個(gè)機(jī)器上運(yùn)行了多個(gè)用戶站點(diǎn),而又希望用戶可以自己改變配置的情況下。雖然如此,一般都應(yīng)該盡可能地避免使用.htaccess文件。任何希望放在.htaccess文件中的配置,都可以放在主配置文件的<Directory>段中,而且更高效。避免使用.htaccess文件有兩個(gè)主要原因,即性能和安全。
附:.htaccess工具連接
在線 .htaccess文件生成器
http://cooletips.de/htaccess/
能夠在線生成. htaccess文件,很簡(jiǎn)單的就配置重定向,系統(tǒng)錯(cuò)誤文件等。
.htaccess編輯器在線編輯器
可自定義默認(rèn)編碼,錯(cuò)誤頁面等等
本文來自網(wǎng)絡(luò),覺得不錯(cuò)就發(fā)來大家看看
歡迎光臨 WDlinux官方論壇 (http://www.ahbydz.com/bbs/) | Powered by Discuz! 7.2 |