|
RewriteCond TestString CondPattern [flags]
/*
RewriteCond:
指令定義了一個(gè)規(guī)則的條件,即,在一個(gè)RewriteRule指令之前有一個(gè)或多個(gè)RewriteCond指令。
條件之后的重寫(xiě)規(guī)則僅在當(dāng)前URI與pattern匹配并且符合這些條件的時(shí)候才會(huì)起作用。
RewriteRule Pattern Substitution [Flags]
/*
其中的Pattern就是參數(shù),一般為一些文件的擴(kuò)展名;
Substitution是用來(lái)替換前面用的;
這兒的Flags,參考上面的表格,常用的R表示 redirect(強(qiáng)制重定向),F(xiàn)表示forbidden(禁止訪問(wèn)),L表示last(最后),通常當(dāng)你希望停止重寫(xiě)操作而立即重定向時(shí),可用它。
*/
防止目錄瀏覽:
Options All -Indexes
404重定向
ErrorDocument 404 /404.html
--------------------------------------------------------------------------------------------------------------------------
開(kāi)啟重寫(xiě)引擎 :RewriteEngine on
設(shè)置重寫(xiě)的根目錄:RewriteBase / — 說(shuō)明 :因?yàn)槎x了這個(gè)文件夾,所以對(duì)應(yīng)的替換就有了一個(gè)參照。
匹配所有符合條件的請(qǐng)求:RewriteCond — 說(shuō)明:RewriteCond 定義了一系列規(guī)則條件,這個(gè)指令可以有一條或者多條,只有用戶拿來(lái)的url符合這些條件之后,我們的.htaccess才開(kāi)始接待,否則用戶就直接自己去訪問(wèn)所需要的目錄了。
舉個(gè)例子,為了能讓搜索引擎更多地抓取我們的網(wǎng)頁(yè)而避免重復(fù)抓,我們通常把沒(méi)有www的域名重定向到www.XXX.com,如下就實(shí)現(xiàn)了這個(gè)功能:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^xxx\.com$ [NC]
RewriteRule ^(.*)$ http://www.xxx.com/$1 [R=301,L]
上例便把xxx.com 重定向到www.xxx.com
%{HTTP_HOST} 是指取得用戶訪問(wèn)的URL的主域名 然后空格后面是一個(gè)正則表達(dá)式匹配,意識(shí)就是說(shuō)是否是 xxx.com 。
如果用戶訪問(wèn)使用的URL滿足所有列出的RewriteCond 提出的條件,那么進(jìn)行下一步RewriteRule 即開(kāi)始進(jìn)行引導(dǎo),這才開(kāi)始實(shí)現(xiàn).htaccess文件的重要功能。
同樣,前面是正則表達(dá)式,用戶分析用戶的除了主域名nbphp.com之外的URL ,^(.*)$的意思就是所有的內(nèi)容。 然后空格后面寫(xiě)的是我們引導(dǎo)用戶訪問(wèn)的目錄,我們帶著他走到新的一個(gè)域名上。$1 指的是前面括號(hào)里匹配url所得到的內(nèi)容。
--------------------------------------------------------------------------------------------------------------------------
.htaccess中的[NC][R][F][L]幾個(gè)標(biāo)記是什么意思
NC: no case,就是說(shuō)不區(qū)分大小寫(xiě)
R:redirect,重定向
F:forbidden,禁止訪問(wèn)
L:last,表示已經(jīng)是最后一條規(guī)則,.htaccess文件解析即將退出
RewriteEngine On
RewriteRule ^beauty/ydjs/office/(\d{6})(\d{2})/(.*)$ /a/$1/$3 [NC,R=301]
NC,R 這幾個(gè)參數(shù)現(xiàn)在就很容易理解了,NC:忽略大小寫(xiě);R:跳轉(zhuǎn)形式為301
.htaccess語(yǔ)法規(guī)則
RewriteEngine On
RewiteBase /
RewriteCond %{HTTP_REFERER} !^http://(.+.)?baidu.com/ [NC] //如果來(lái)源網(wǎng)址不是*.baidu.com
RewriteCond %{HTTP_REFERER} !^$ //并且來(lái)源網(wǎng)址不是空
RewriteRule .*.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L] //如果訪問(wèn)的文件后綴是jpeg,jpg,gif,bmp,png的圖片,則重定向到一個(gè)固定的圖片
RewriteEngine On|Off //RewriteEngine 用于開(kāi)啟或停用rewrite功能。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^localhost$ //如果域名是localhost
RewriteCond %{REQUEST_FILENAME} !-f //并且訪問(wèn)的文件找不到
RewriteRule ^images/(.+) http://127.0.0.1/test/showimages/$1 [R=302,L] //則跳轉(zhuǎn)到另一個(gè)域名下的另一個(gè)目錄訪問(wèn)這個(gè)圖片
二級(jí)域名重定向到www.yourdomain.com
rewriteEngine on
rewriteCond %{http_host} ^yourdomain.com [NC]
rewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L]
設(shè)置目錄默認(rèn)頁(yè)面
DirectoryIndex about.html
RewriteRule標(biāo)記 含 義 描 述
R Redirect 發(fā)出一個(gè)HTTP重定向
F Forbidden 禁止對(duì)URL地址的存取
G Gone 標(biāo)記URL地址不存在
P Proxy 將URL地址傳遞給mod_proxy
L Last 停止處理接下來(lái)的規(guī)則
N Next 再次重第一個(gè)規(guī)則開(kāi)始處理,但是使用當(dāng)前重寫(xiě)后的URL地址
C Chain 將當(dāng)前的規(guī)則和緊隨其后的規(guī)則鏈接起來(lái)
T Type 強(qiáng)制執(zhí)行指明的MIME類
NS Nosubreq 只在沒(méi)有任何內(nèi)部子請(qǐng)求執(zhí)行時(shí)運(yùn)行本腳本
NC Nocase URL地址匹配對(duì)大小寫(xiě)不敏感
QSA Qsappend 在新的URL地址后附加查詢字符串部分,而不是替代
PT Passthrough 將重寫(xiě)后的URL地址傳遞給另一個(gè)Apache模塊進(jìn)行進(jìn)一步處理
S Skip 忽略之后的規(guī)則
E Env 設(shè)置環(huán)境變量
服務(wù)器變量NAME_OF_VARIABLE具體數(shù)值見(jiàn)下表:
復(fù)制代碼
HTTP_USER_AGENT //主要用于檢測(cè)訪問(wèn)者系統(tǒng)和瀏覽器等
HTTP_REFERER //從哪個(gè)頁(yè)面鏈接過(guò)來(lái)
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST //域名
HTTP_PROXY_CONNECTION
HTTP_ACCEPT
REMOTE_ADDR
REMOTE_HOST
REMOTE_USER
REMOTE_IDENT
REQUEST_METHOD
SCRIPT_FILENAME
PATH_INFO
QUERY_STRING
AUTH_TYPE
DOCUMENT_ROOT
SERVER_ADMIN
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME
API_VERSION //這是正在使用的httpd中(服務(wù)器和模塊之間內(nèi)部接口)的Apache模塊API的版本, 其定義位于include/ap_mmn.h中。此模塊版本對(duì)應(yīng)于正在使用的Apache的版本 (比如,在Apache 1.3.14的發(fā)行版中,這個(gè)值是19990320:10)。 通常,對(duì)它感興趣的是模塊的作者。
THE_REQUEST //這是由瀏覽器發(fā)送給服務(wù)器的完整的HTTP請(qǐng)求行。(比如, “GET /index.html HTTP/1.1″). 它不包含任何瀏覽器發(fā)送的附加頭信息。
REQUEST_URI //這是在HTTP請(qǐng)求行中所請(qǐng)求的資源。
REQUEST_FILENAME //這是與請(qǐng)求相匹配的完整的本地文件系統(tǒng)的文件路徑名或描述.
IS_SUBREQ //如果正在處理的請(qǐng)求是一個(gè)子請(qǐng)求,它包含字符串”true”,否則就是”false”。 模塊為了解析URI中的附加文件,有可能會(huì)產(chǎn)生子請(qǐng)求
|
|