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