.htaccess的重写规则
.htaccess基本語法和應(yīng)用
.htaccess是Apache服務(wù)器的一個(gè)非常強(qiáng)大的分布式配置文件。
正確的理解和使用.htaccess文件,可以幫助我們優(yōu)化自己的服務(wù)器或者虛擬主機(jī)。
如何啟用htaccess
以windows為例,進(jìn)入apache/conf目錄,找到httpd.conf文件,去掉
LoadModule rewrite_module modules/mod_rewrite.so
前面的#,然后設(shè)置目錄屬性AllowOverride All,重啟apache即可
常見格式
下面是一個(gè)典型的htaccess文件
# 開啟URL重寫 RewriteEngine on
# URL重寫的作用域 RewriteBase /path/to/url
# 滿足怎樣的條件
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
# 應(yīng)用怎樣的規(guī)則
RewriteRule .? http://www.example.com%{REQUEST_URI} [R=301,L]
?
來看看RewriteCond,首先有一個(gè)%,因?yàn)閧HTTP_HOST}是一個(gè)apache變量,需要用%來指示。從!開始就是匹配的條件,支持 正則。!表示不等于,這句話的意思就是:如果HTTP_HOST不是www.example.com。后面的[NC](no case)表示忽略大小寫,常見的還有
- [L](last):終止一系列的RewriteCond和RewriteRule
- [R](redirect):觸發(fā)一個(gè)顯示的跳轉(zhuǎn),也可以指定跳轉(zhuǎn)類型,如[R=301]
- [F](forbidden):禁止查看特定文件,apache會觸發(fā)403錯(cuò)誤
典型應(yīng)用
圖片防盜鏈
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/ [NC]
RewriteRule \.(gif|jpg|png)$ - [F]
由于是基于HTTP_REFERER的驗(yàn)證,所以只能防止一般的圖片盜鏈,因?yàn)镠TTP_REFERER是比較容易偽造的
自定義404錯(cuò)誤頁面
如果用戶輸入了一個(gè)不存在的url,那么就顯示自定義的錯(cuò)誤頁面
ErrorDocument 404 /404.html # 其他同理 ErrorDocument 500 /500.html
處理移動過的文件
Redirect 301 /old.html http://yoursite.com/new.html
?
# 也可以是下面這樣 RewriteRule /old.html http://yoursite.com/new.html [R=301,L]
?
# 如果想隱式跳轉(zhuǎn)(URL地址不變,但實(shí)際上內(nèi)容是其他URL的),就使用下面的 RewriteRule /old.html http://yoursite.com/new.html [L]
對于RewriteRule還有好多文章可以做,比如
?
# 把html后綴的url鏈接到php文件
# $1指代的是前面第1個(gè)用括號括起來的內(nèi)容 RewriteRule ^/?([a-z/]+)\.html$ $1.php [L]
# 或者把舊文件夾的內(nèi)容鏈接到新文件夾 RewriteRule ^/?old_directory/([a-z/.]+)$ new_directory/$1 [R=301,L]
?
# 隱藏文件名 RewriteRule ^/?([a-z]+)$ $1.php [L]
禁止顯示目錄列表
如果目錄里沒有index文件,又沒有對該目錄做過特別的處理,尤其是windows主機(jī),那么該目錄里的內(nèi)容就會顯示出來,這時(shí)可以在根目錄創(chuàng)建 一個(gè).htaccess文件,然后寫上
Options -Indexes # 就這么一句就搞定了
?
阻止/允許特定IP/IP段
# 禁止所有IP,除了指定的 order deny,allow deny from all
# 如果想允許IP段,如123.123.123.0 ~ 123.123.123.255,則
# allow from 123.123.123. allow from 123.123.123.123ErrorDocument 403 /page.html<Files page.html> allow from all </Files>
#如果想禁止特定IP deny from 123.123.123.123
添加MIME類型
AddType video/x-flv .flv
# 如果設(shè)置類型為 application/octet-stream 將提示下載 AddType application/octet-stream .pdf?
總結(jié)
以上是生活随笔為你收集整理的.htaccess的重写规则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BAT批处理,怎么把文件的某行内容替换成
- 下一篇: 由浅入深剖析.htaccess