nginx配置url重寫

2021-09-08 20:21:26 字數 2562 閱讀 1328

url重寫是指通過配置conf檔案,以讓**的url中達到某種狀態時則定向/跳轉到某個規則,比如常見的偽靜態、301重定向、瀏覽器定向等

在配置檔案的server塊中寫,如:

server

server

last和break的區別

因為301和302不能簡單的只返回狀態碼,還必須有重定向的url,這就是return指令無法返回301,302的原因了。這裡 last 和 break 區別有點難以理解:

location裡一旦返回break則直接生效並停止後續的匹配location

server 

location = /q.html

}

只是上面的簡單重寫很多時候滿足不了需求,比如需要判斷當檔案不存在時、當路徑包含xx時等條件,則需要用到if

if

(表示式)

一些內建的條件判斷:

$args :這個變數等於請求行中的引數,同$query_string

$content_length : 請求頭中的content-length欄位。

$content_type : 請求頭中的content-type欄位。

$document_root : 當前請求在root指令中指定的值。

$host : 請求主機頭欄位,否則為伺服器名稱。

$http_user_agent : 客戶端agent資訊

$http_cookie : 客戶端cookie資訊

$limit_rate : 這個變數可以限制連線速率。

$request_method : 客戶端請求的動作,通常為get或post。

$remote_port : 客戶端的埠。

$remote_user : 已經經過auth basic module驗證的使用者名稱。

$request_filename : 當前請求的檔案路徑,由root或alias指令與uri請求生成。

$scheme : http方法(如http,https)。

$server_protocol : 請求使用的協議,通常是http/1.0或http/1.1

。$server_name : 伺服器名稱。

$server_port : 請求到達伺服器的埠號。

$request_uri : 包含請求引數的原始uri,不包含主機名,如:」/foo/bar.php?arg=baz」。

$uri : 不帶請求引數的當前uri,$uri不包含主機名,如」/foo/bar.html」。

$document_uri : 與$uri相同。

如:

訪問鏈結是:http://localhost:88/test1/test2/test.php 

# 如果檔案不存在則返回400

if (!-f $request_filename)

# 如果host不是xuexb.com,則301到xuexb.com中

if ( $host != "

xuexb.com")

# 如果請求型別不是post則返回405

if ($request_method =post)

# 如果引數中有 a=1

則301到指定網域名稱

if ($args ~ a=1

)

在某種場景下可結合location規則來使用,如:

# 訪問 /test.html 時

location = /test.html

# 301rewrite ^ /$name.html permanent;

}

上面表示:

server塊中使用,如:

server 

}

location表示式型別

等號型別(=)的優先順序最高。一旦匹配成功,則不再查詢其他匹配項。

^~型別表示式。一旦匹配成功,則不再查詢其他匹配項。

正規表示式型別(~ ~*)的優先順序次之。如果有多個location的正則能匹配的話,則使用正規表示式最長的那個。

常規字串匹配型別。按字首匹配。

server 

# 訪問真實位址直接報沒許可權

location /admin

}

參考 nginx location在配置中的優先順序

nginx配置url重寫

url重寫是指通過配置conf檔案,以讓 的url中達到某種狀態時則定向 跳轉到某個規則,比如常見的偽靜態 301重定向 瀏覽器定向等 在配置檔案的server塊中寫,如 server server 因為301和302不能簡單的只返回狀態碼,還必須有重定向的url,這就是return指令無法返回30...

nginx配置url重寫

url重寫是指通過配置conf檔案,以讓 的url中達到某種狀態時則定向 跳轉到某個規則,比如常見的偽靜態 301重定向 瀏覽器定向等 在配置檔案的server塊中寫,如 server serverlast和break的區別 因為301和302不能簡單的只返回狀態碼,還必須有重定向的url,這就是r...

nginx配置url重寫

url重寫是指通過配置conf檔案,以讓 的url中達到某種狀態時則定向 跳轉到某個規則,比如常見的偽靜態 301重定向 瀏覽器定向等 在配置檔案的server塊中寫,如 server serverlast和break的區別 因為301和302不能簡單的只返回狀態碼,還必須有重定向的url,這就是r...