pache的Rewrite規則詳細介紹

2021-07-23 00:17:58 字數 3127 閱讀 5993

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 判斷...