url重寫是指通過配置conf檔案,以讓**的url中達到某種狀態時則定向/跳轉到某個規則,比如常見的偽靜態、301重定向、瀏覽器定向等
在配置檔案的server
塊中寫,如:
server
server
因為301和302不能簡單的只返回狀態碼,還必須有重定向的url,這就是return指令無法返回301,302的原因了。這裡 last 和 break 區別有點難以理解:
在location
裡一旦返回break
則直接生效並停止後續的匹配location
serverlocation = /q.html
}
只是上面的簡單重寫很多時候滿足不了需求,比如需要判斷當檔案不存在時、當路徑包含xx時等條件,則需要用到if
if (表示式)一些內建的條件判斷:
如:
# 如果檔案不存在則返回400if (!-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
塊中使用,如:
serverlocation表示式型別}
等號型別(=)的優先順序最高。一旦匹配成功,則不再查詢其他匹配項。
^~型別表示式。一旦匹配成功,則不再查詢其他匹配項。
正規表示式型別(~ ~*)的優先順序次之。如果有多個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 serverlast和break的區別 因為301和302不能簡單的只返回狀態碼,還必須有重定向的url,這就是r...
nginx配置url重寫
url重寫是指通過配置conf檔案,以讓 的url中達到某種狀態時則定向 跳轉到某個規則,比如常見的偽靜態 301重定向 瀏覽器定向等 在配置檔案的server塊中寫,如 server serverlast和break的區別 因為301和302不能簡單的只返回狀態碼,還必須有重定向的url,這就是r...