nginx配置url重寫規則

2021-09-10 09:53:20 字數 2127 閱讀 7178

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

server

server
因為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相同。

如:

# 如果檔案不存在則返回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

# 301

rewrite ^ /$name.html permanent;

}

上面表示:

在server塊中使用,如

server 

}

location表示式型別

server 

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

location /admin

}

nginx配置url重寫

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

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