htaccess文件我想對(duì)于站來講并不陌生了,他的作用可以在另一個(gè)層面來講可替換apache一些功能了,但是在apache寫一些規(guī)則要比在htaccess要快很多,這個(gè)就不多介紹了,下面主要介紹htaccess文件用法。
Apache系統(tǒng)中的.htaccess文件(也稱“分布式配置文件”)提供了針對(duì)目錄改變配置的方法,也就是在一個(gè)特定的文檔目錄中放置一個(gè)包含指令的文件, 以作用于此目錄及其所有子目錄。直白的說,.htaccess文件只是一個(gè)簡單的文檔,可以在里面加些簡單的命令實(shí)現(xiàn)各種不同的設(shè)置。
如何知道主機(jī)是否支持.htaccess?
其實(shí)大部分主機(jī)都支持.htaccess,但實(shí)際上你的主機(jī)提供商并不會(huì)特別聲明。一般來說,如果你的主機(jī)使用Unix或Linux系統(tǒng),或任何版本的Apache網(wǎng)絡(luò)服務(wù)器,理論上都是支持.htaccess的,但是有的主機(jī)服務(wù)商有可能不允許你使用它。判斷你的主機(jī)是否允許.htaccess,一個(gè)很好的方法是看它是否支持文件夾密碼保護(hù)。為達(dá)到此功能,主機(jī)服務(wù)商需要使用.htaccess(當(dāng)然,少數(shù)情況下他們雖提供密碼保護(hù)功能,但卻并不允許你使用.htaccess)。最好的辦法是上傳你自己的.htaccess文件看看是否有用,或者直接向你的主機(jī)服務(wù)商咨詢。
.htaccess文件可以做什么?
.htaccess文件可以做大量的事情,包括:文件夾密碼保護(hù)、用戶自動(dòng)重定向、自定義錯(cuò)誤頁面、改變你的文件擴(kuò)展名、封禁特定IP地址的用戶、只允許特定IP地址的用戶、禁止目錄列表,以及使用其他文件作為index文件等等。下面園子將列舉幾個(gè)常用的功能與大家分享。
使用.htaccess文件自定義404錯(cuò)誤頁
.htaccess文件最常用的功能應(yīng)該就是自定義404頁面了,其操作也非常簡單,在.htaccess 文件中加入代碼:
- ErrorDocument 404 /Error.html
然后建立一個(gè)簡單的html404頁面并命名 Error.html,把 Error.html放置在網(wǎng)站根目錄即可。
當(dāng)然,如果你的404文件不在網(wǎng)站的根目錄下,你只需要把路徑設(shè)置為:
- ErrorDocument 404/errors/Error.html
以下列舉了網(wǎng)站上一些最常用的錯(cuò)誤類型:
401 – Authorization Required 需要驗(yàn)證
400 – Bad request 錯(cuò)誤請(qǐng)求
403 – Forbidden 禁止
500 – Internal Server Error 內(nèi)部服務(wù)器錯(cuò)誤
404 – Wrong page 找不到頁面
你可以有選擇的創(chuàng)建錯(cuò)誤時(shí)的文件,然后在.htaccess文件里面進(jìn)行定義(方法和404頁面的方法一樣),上傳到你的網(wǎng)站上即可。
1.時(shí)區(qū)設(shè)置
有些時(shí)候,當(dāng)你在PHP里使用date或mktime函數(shù)時(shí),由于時(shí)區(qū)的不同,它會(huì)顯示出一些很奇怪的信息。下面是解決這個(gè)問題的方法之一。就是設(shè)置你的服務(wù)器的時(shí)區(qū)。你可以在這里找到所有支持的時(shí)區(qū)的清單。
SetEnv TZ Australia/Melbourne
2. seo搜索引擎友好的301永久轉(zhuǎn)向方法
為什么這是搜索引擎友好的呢?因?yàn)楝F(xiàn)在很多現(xiàn)代的搜索引擎都有能根據(jù)檢查301永久轉(zhuǎn)向來更新它現(xiàn)有的記錄的功能。
- Redirect 301 http://www.companysz.com http://www.companysz.com/
3. 屏蔽下載對(duì)話框
通常,當(dāng)你下載東西的時(shí)候,你會(huì)看到一個(gè)對(duì)話框詢問你是保持這個(gè)文件還是直接打開它。如果你不想看到這個(gè)東西,你可以把下面的一段代碼放到你的.htaccess文件里。
- AddType application/octet-stream .pdf
- AddType application/octet-stream .zip
- AddType application/octet-stream .mov
4. 省去www前綴
SEO的一個(gè)原則是,確保你的網(wǎng)站只有一個(gè)URL。因此,你需要把所有的通過www的訪問轉(zhuǎn)向的非www,或者反這來。
- RewriteEngine On
- RewriteBase /
- RewriteCond %{HTTP_HOST} ^www.companysz.com [NC]
- RewriteRule ^(.*)$ http://Vevb.com/$1 [L,R=301]
5. 個(gè)性化Error頁面
- ErrorDocument 401 /error/401.php
- ErrorDocument 403 /error/403.php
- ErrorDocument 404 /error/404.php
- ErrorDocument 500 /error/500.php
6. 壓縮文件
- # 壓縮 text, html, javascript, css, xml:
- AddOutputFilterByType DEFLATE text/plain
- AddOutputFilterByType DEFLATE text/html
- AddOutputFilterByType DEFLATE text/xml
- AddOutputFilterByType DEFLATE text/css
- AddOutputFilterByType DEFLATE application/xml
- AddOutputFilterByType DEFLATE application/xhtml+xml
- AddOutputFilterByType DEFLATE application/rss+xml
- AddOutputFilterByType DEFLATE application/javascript
- AddOutputFilterByType DEFLATE application/x-javascript
7. 緩存文件
緩存文件是另外一個(gè)提高你的網(wǎng)站訪問速度的好方法。
- <FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
- Header set Cache-Control "max-age=2592000"
- </FilesMatch>
8. 對(duì)某些文件類型禁止使用緩存
而另一方面,你也可以定制對(duì)某些文件類型禁止使用緩存,顯式的規(guī)定對(duì)腳本和其它動(dòng)態(tài)文件禁止使用緩存。
- <FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$">
- Header unset Cache-Control
- </FilesMatch>
安全問題
下面的htaccess代碼能夠提高你的web服務(wù)器的安全水平。圖片鏈接盜用保護(hù)非常有用,它能防止其他人偷盜使用你的服務(wù)器上的圖片資源。
1. 通過.htaccess放盜鏈
痛恨那些偷盜鏈接你的web服務(wù)器上的圖片資源而耗盡了你的帶寬的行為嗎?試試這個(gè),你可以防止這種事情的發(fā)生。
- RewriteBase /
- RewriteCond %{HTTP_REFERER} !^$
- RewriteCond %{HTTP_REFERER} !^http://(www.)?Vevb.com/.*$ [NC]
- RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]
2. 防黑客
- RewriteEngine On
- # proc/self/environ? 沒門!
- RewriteCond %{QUERY_STRING} proc/self/environ [OR]
阻止腳本企圖通過URL修改mosConfig值
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]
阻止腳本通過URL傳遞的base64_encode垃圾信息
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
阻止在URL含有<script>標(biāo)記的腳本
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
阻止企圖通過URL設(shè)置PHP的GLOBALS變量的腳本
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
阻止企圖通過URL設(shè)置PHP的_REQUEST變量的腳本
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
把所有被阻止的請(qǐng)求轉(zhuǎn)向到403禁止提示頁面!
RewriteRule ^(.*)$ index.php [F,L]
3. 阻止訪問你的 .htaccess 文件
下面的代碼可以阻止別人訪問你的.htaccess文件。同樣,你也可以設(shè)定阻止多種文件類型。
- # 保護(hù)你的 htaccess 文件
- <Files .htaccess>
- order allow,deny
- deny from all
- </Files>
- # 阻止查看指定的文件
- <Files secretfile.jpg>
- order allow,deny
- deny from all
- </Files>
- # 多種文件類型
- <FilesMatch “.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$”>
- Order Allow,Deny
- Deny from all
- </FilesMatch>
4. 重命名 htaccess 文件
你可以通過重命名htaccess文件來對(duì)其進(jìn)行保護(hù)。
- AccessFileName htacc.ess
5. 禁止目錄瀏覽
禁止服務(wù)器對(duì)外顯示目錄結(jié)構(gòu),反之亦然。
- # 禁止目錄瀏覽
- Options All -Indexes
- # 開放目錄瀏覽
- Options All +Indexes
6. 改變?nèi)笔〉腎ndex頁面
你可以把缺省的 index.html, index.php 或 index.htm 改成其它頁面。
- DirectoryIndex business.html
7. 通過引用信息來阻止某些不歡迎的瀏覽者
- # 阻止來自某網(wǎng)站的用戶
- <IfModule mod_rewrite.c>
- RewriteEngine on
- RewriteCond %{HTTP_REFERER} scumbag.com [NC,OR]
- RewriteCond %{HTTP_REFERER} wormhole.com [NC,OR]
- RewriteRule .* - [F]
- </ifModule>
8. 通過判斷瀏覽器頭信息來阻止某些請(qǐng)求
這個(gè)方法可以通過阻止某些機(jī)器人或蜘蛛爬蟲抓取你的網(wǎng)站來節(jié)省你的帶寬流量。
- # 阻止來自某些特定網(wǎng)站的用戶
- <IfModule mod_rewrite.c>
- SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT Deny from env=HTTP_SAFE_BADBOT
- </ifModule>
9. 禁止腳本執(zhí)行,加強(qiáng)你的目錄安全
- # 禁止某些目錄里的腳本執(zhí)行權(quán)限
- AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
- Options -ExecCGI
使用.htaccess文件實(shí)現(xiàn)網(wǎng)站目錄密碼保護(hù)
有時(shí)候你可能會(huì)針對(duì)某個(gè)目錄設(shè)定對(duì)應(yīng)的密碼保護(hù),首先要做的是生成一個(gè).htpasswd的文檔,然后輸入用于訪問網(wǎng)站的用戶名和密碼,格式為:username:password
其中“password”的位置應(yīng)該是加密過的密碼。另外需要注意的是.htpasswd文檔的位置最好放在www目錄之外,這樣相對(duì)會(huì)安全一些。最后在.htaccess中加入如下指令:
- AuthUserFile /full/path/to/.htpasswd (.htpasswd的服務(wù)器目錄)
- AuthGroupFile /dev/null (需要授權(quán)訪問的目錄)
- AuthName EnterPassword
- AuthType Basic (授權(quán)類型)
- Require valid-user
這樣就完成了使用.htaccess文件實(shí)現(xiàn)網(wǎng)站目錄密碼保護(hù)。
注:在使用.htaccess來設(shè)置目錄的密碼保護(hù)時(shí),它包含了密碼文件的路徑。從安全考慮,有必要把.htaccess也保護(hù)起來,不讓別人看到其中的內(nèi)容。最簡單的方法是在.htaccess文件中加入如下指令即可:
- order allow,deny
- deny from all
使用.htaccess文件拒絕某個(gè)IP的訪問
其實(shí)這個(gè)功能也經(jīng)常用到,有時(shí)候你可能要禁止某個(gè)或者某段IP訪問到你的網(wǎng)站,你就可以通過在.htaccess中加入類似如下的代碼來實(shí)現(xiàn):
- order allow,deny
- deny from 220.156.156.55
- deny from 220.156.156.
- allow from all
其中的第二行代碼為拒絕某個(gè)IP,第三行是拒絕某個(gè)IP段,也就只要IP地址在220.156.156.0~220.156.156.255 之前的IP段都無法再訪問你的站點(diǎn)。如果你想阻止所有人訪問該目錄,則可以使用:
- deny from all
使用.htaccess文件防盜鏈
很多站長都會(huì)遇到比較郁悶的問題,就是有些人會(huì)經(jīng)常盜鏈自己網(wǎng)站的圖片、軟件等資源,這樣造成了不必要的流量浪費(fèi)。想要防止盜鏈簡單的做法是在.htaccess文件加入如下指令:
- RewriteEngine on
- RewriteCond %{ HTTP_REFERER } !^$
- RewriteCond %{ HTTP_REFERER } !^http://(www.)?mydomain.com/.*$ [NC]
- RewriteRule .(gif&line;jpg)$ - [F]
如果你想避免此方法給那些盜鏈你的網(wǎng)站帶來不友好的空白,你可以做一張圖片來代替,這張圖片也可以適當(dāng)?shù)男麄髂阕约旱木W(wǎng)站。指令如下:
- RewriteEngine on
- RewriteCond %{ HTTP_REFERER } !^$
- RewriteCond %{ HTTP_REFERER } !^http://(www.)?Vevb.com/.*$ [NC]
- RewriteRule .(gif&line;jpg)$ http://www.companysz.com/替代圖片文件名 [R,L]
使用.htaccess文件改變?nèi)笔〉氖醉撐募?/p>
這一點(diǎn)也比較常用,如果你的站點(diǎn)是使用PHP來架構(gòu)的,你可以只想定義index.php為缺省的首頁文件,通過.htaccess文件可以輕松做到這點(diǎn)。代碼如下:
- DirectoryIndex index.php index.php3 messagebrd.pl index.html index.htm
服務(wù)器會(huì)從左至右進(jìn)行尋找,檢查哪個(gè)文檔在你的網(wǎng)站目錄中存在。先找到的文件即是你網(wǎng)站的缺省首頁文件。
|
新聞熱點(diǎn)
疑難解答
圖片精選