rewrite是一種伺服器的重寫脈衝技術,它可以使得伺服器可以支援 url 重寫,是一種最新流行的伺服器技術。它還可以實現限制特定ip訪問**的功能。
rewrite標誌
r[=code](force redirect) 強制外部重定向
g(force url to be gone) 強制url為gone,返回410http狀態碼。
p(force proxy) 強制使用****。
l(last rule) 表明當前規則是最後一條規則,停止分析以後規則的重寫。
n(next round) 重新從第一條規則開始執行重寫過程。
c(chained with next rule) 與下一條規則關聯
如果規則匹配則正常處理,該標誌無效,如果不匹配,那麼下面所有關聯的規則都跳過
t=mime-type(force mime type) 強制mime型別
ns (used only if no internal sub-request) 只用於不是內部子請求
nc(no case) 不區分大小寫
ne(no uri escaping of output) 不在輸出轉義特殊字元
例如:rewriterule /foo/(.*) /bar?arg=p1\%3d$1 [r,ne] 將能正確的將/foo/zoo轉換成/bar?arg=p1=zed
pt(pass through to next handler) 傳遞給下乙個處理
例如:rewriterule ^/abc(.*) /def$1 [pt] # 將會交給/def規則處理
alias /def /ghi
s=num(skip next rule(s)) 跳過num條規則
e=var:val(set environment variable) 設定環境變數
rewritecond標誌符
'nocase|nc'(no case)忽略大小
'ornext|or' (or next condition)邏輯或,可以同時匹配多個rewritecond條件rewriterule適用的標誌符
'redirect|r [=code]' (force redirect)強迫重寫為基於http開頭的外部轉向(注意url的變化) 如:[r=301,l]
'forbidden|f' (force url to be forbidden)重寫為禁止訪問
'proxy|p' (force proxy)重寫為通過**訪問的http路徑
'last|l' (last rule)最後的重寫規則標誌,如果匹配,不再執行以後的規則
'next|n' (next round)迴圈同乙個規則,直到不能滿足匹配
'chain|c' (chained with next rule)如果匹配該規則,則繼續下面的有chain標誌的規則。
'type|t=mime-type' (force mime type)指定mime型別
'nosubreq|ns' (used only if no internal sub-request)如果是內部子請求則跳過
'nocase|nc' (no case)忽略大小
'noescape|ne' (no uri escaping of output)禁止url中的字元自動轉義成%[0-9]+的形式。
'passthrough|pt' (pass through to next handler)將重寫結果運用於mod_alias
'skip|s=num' (skip next rule(s))跳過下面幾個規則
'env|e=var:val' (set environment variable)新增環境變數
rewrite時伺服器變數:
rewrite規則表示式的說明:
. 匹配任何單字元
[chars] 匹配字串:chars
[^chars] 不匹配字串:chars
text1|text2 可選擇的字串:text1或text2
? 匹配0到1個字元
* 匹配0到多個字元
+ 匹配1到多個字元
^ 字串開始標誌
$ 字串結束標誌
\n 轉義符標誌
反向引用 $n 用於 rewriterule 中匹配的變數呼叫(0 <= n <= 9)
反向引用 %n 用於 rewritecond 中最後乙個匹配的變數呼叫(1 <= n <= 9)
實際操作:例子:rewriteengine on
rewritecond % ^msie [nc,or]
rewritecond % ^opera [nc]
rewriterule ^.* - [f,l] 這裡」-」表示沒有替換,瀏覽器為ie和opera的訪客將被禁止訪問。
例子:rewriteengine on
rewritebase /test
rewritecond %.php -f
rewriterule ([^/]+)$ /test/$1.php
#for example: /test/admin => /test/admin.php
rewriterule ([^/]+)\.html$ /test/$1.php [l]
#for example: /test/admin.html => /test/admin.php
限制目錄只能顯示
Nginx基礎的Rewrite規則
rewrite是nginx乙個特別重要的指令,該指令可以使用正規表示式改寫uri。可以指定乙個或多個rewrite指令,按順序匹配 區分大小寫匹配 不區分大小寫匹配 和 區分大小寫不匹配及不區分大小寫不匹配 f和 f 判斷是否存在檔案 d和 d 判斷是否存在目錄 e和 e 判斷是否存在檔案或目錄 x...
Nginx的Rewrite規則編寫
昨天為單位的ngnix伺服器配置了乙個rewrite規則,以防止符合特定規則的被盜鏈。同時,還有乙個需求就是,從我們的管理站點來的請求應該可以訪問這些。查了一些資料,最後總結如下 在解決這個問題的過程中,找了一些資料,在解決 valid referers 這個配置的時候,按照網上的一些文章,總是不能...
Nginx基礎 Rewrite規則
rewrite是nginx乙個特別重要的指令,該指令可以使用正規表示式改寫uri。可以指定乙個或多個rewrite指令,按順序匹配。1 區分大小寫匹配 2 不區分大小寫匹配 3 和 區分大小寫不匹配及不區分大小寫不匹配1 f和 f 判斷是否存在檔案 2 d和 d 判斷是否存在目錄 3 e和 e 判斷...