在配置檔案的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...