爲了方便 htaccess 編寫正則,這裏整理了一下 htaccess 的正則規則。正則表達式
- # —— 位於行首時表示註釋。
- [F] —— Forbidden(禁止): 命令服務器返回 403 Forbidden錯誤給用戶瀏覽器
- [L] —— Last rule(最後一條規則): 告訴服務器在本條規則執行完後中止重寫URL
- [N] —— Next(下一條規則): 告訴服務器繼續重寫,指導全部重寫指令都執行過
- [G] —— Gone(丟失): 命令服務器返回410 GONE(no longer exists)錯誤消息
- [P] —— Proxy(代理): 告訴服務器經過mod_proxy模塊處理用戶請求
- [C] —— Chain(捆綁): 告訴服務器將當前的規則和前面的規則進行捆綁
- [R] —— Redirect(重定向): 命令服務器發出重定向消息,以便用戶瀏覽器發出rewritten/modified(重寫/修改)URL的請求
- [NC] —— No Case(不區分大小寫): 對客戶端請求的URL不區分大小寫
- [PT] —— Pass Through(放行): 讓mod_rewrite模塊將重寫的URL傳回給Apache作進一步處理
- [OR] —— Or(邏輯或): 用邏輯「或」將兩個表達式鏈接在一塊兒,若是結果爲「真」,則會應用後繼的相關規則
- [NE] —— No Escape(禁用轉義): 命令服務器在輸出時禁用轉義字符
- [NS] —— No Subrequest(禁用子請求): 若是存在內部子請求,則跳過當前命令
- [QSA] —— Append Query String(追加查詢字符串): 命令服務器在URL末尾追加查詢字符串
- [S=x] —— Skip(跳過): 若是知足某指定的條件,則跳事後面第x調規則
- [E=variable:value] —— Environmental Variable(環境變量): 命令服務器將值value賦給變量variable
- [T=MIME-type] —— Mime Type(MIME類型): 聲明目標資源所屬的MIME類型
- [] —— 匹配一個字符集合,例如[xyz]能夠匹配x, y或者z
- []+ —— 例如[xyz]+會以任何順序、次數匹配x,y,z的出現
- [^] —— 字符^表示字符集的補集。[^xyz]將匹配沒有x,y或者z的字符串
- [a-z] —— 連字符(-)表示匹配從字母a到字母z的全部字符串
- a{n} —— 指定字母a出現的次數爲n次,知足該條件時匹配。例如x{3}僅與xxx匹配
- a{n,} —— 指定字母a出現的次數至少爲n次,例如x{3,}能夠與xxx或者xxxx等匹配
- a{n,m} —— 指定a出現的次數至少爲n到m次。
- () —— 用於將正則表達式分組,知足第一組正則表達式的字符串會被存儲在變量$1中,以此類推。若是括號中的不是正則表達式,例如(perishable)?press 將可以匹配有或者沒有perishable前綴的press
- ^ —— 位於行首。注意:和中括號中的[^]意義不一樣。
- $ —— 位於行末
- ? —— 例如 monzas? 會匹配 monza 或者 monzas,而 mon(za)? 會匹配 mon 或者 monza。又如 x? 會匹配「空字符」 或者 一個x
- ! —— 邏輯非。例如「!string」 將會匹配除了「string」之外的全部字符串
- . —— 表示任意字符串
- - —— 命令Apache「不要」重寫URL,例如「xxx.domain.com.* – [F]」
- + —— 匹配至少一個任意字符,例如G+匹配以G開頭、而且後面至少有一個字符的字符串
- * —— 匹配零個或多個字符,例如「.*」匹配任意字符串
- | —— 邏輯「或」,與[OR]不一樣的是,它只匹配字符串,例如(x|y)匹配x或者y
- \ —— 轉義字符。能夠轉義左括號( 尖字符^ 美圓符號$ 感嘆號! 點. 星號* 管道符號| 右括號) 等
- \. —— 轉義爲點字符(點字符在正則表達式中能夠匹配任意字符)
- /* —— 零個或多個正斜槓
- .* —— 零個或多個任意字符(即,匹配任意字符串,包括空字符)
- ^$ —— 匹配「空字符」、「空行」
- ^.*$ —— 匹配任意字符串(僅限一行)
- [^/.] —— 匹配既非「正斜槓」也不是「點」的任意字符
- [^/.]+ —— 匹配第一個字符既非「正斜槓」也不是「點」,後繼字符能夠是「正斜槓」或者「點」的字符串
- http:// —— 匹配「http://」
- ^domain.* —— 匹配以「domain」開始的字符串
- ^domain\.com$ —— 僅匹配「domain.com」
- -d —— 測試字符串是不是已存在的目錄
- -f —— 測試字符串是不是已存在的文件
- -s —— 測試字符串所指文件是否有「非零」值