openresty url 재 작성
여기 서 몇 가지 가장 핵심 적 인 api 를 사용 하 는 것 은 바로
ngx.redirect
, ngx.exec
이다.ngx.redirect
말 그대로 리 셋 동작 을 실행 하 는 것 입 니 다. 리 셋 은 url 변경 을 초래 할 수 있 습 니 다. 302 상태 코드 로 돌아 가면 브 라 우 저 는 새로운 요청 을 다시 시작 합 니 다. 리 셋 된 url 까지 사용 방법 은 간단 합 니 다.
old uri
/index/article?id=10000
ngx.redirect('/article' .. ngx.var.is_args .. ngx.var.args)
new uri
/article?id=10000
ngx.exec
내부 에서 직접 요청 을 완성 하고 내용 을 직접 되 돌려 줍 니 다. url 은 변 하지 않 고 용법 이 위 와 차이 가 많 지 않 습 니 다.
old uri
/index/article?id=10000
ngx.exec('/article' .. ngx.var.is_args .. ngx.var.args)
new uri
/index/article?id=10000
url 재 작성 을 한 곳 에 통일 적 으로 쓰 고 유지 하기 편리 하도록 하기 위해 서 우 리 는 이전에 포 장 된 뮤 직 비디오 프레임 워 크 를 확대 할 수 있 습 니 다.
이런 코드 를 더 하 다
lite/mvc.lua
-- url begin
local ret, rewrite = pcall(require, "rewrite") -- rewrite ,
if ret then
local c_ret, r_ret = pcall(rewrite.exec, uri)
-- c_ret ,r_ret , true, ,
if c_ret and r_ret then
return
end
end
-- url end
그리고 lua 디 렉 터 리 에 rewrite. lua 파일 을 추가 합 니 다. 내용 은 다음 과 같 습 니 다.
rewrite.lua
local _M = {}
function _M.exec(uri)
local rewrite_urls = {}
local queryString = ngx.var.args
if queryString == nil then queryString = "" end
rewrite_urls['/index/article'] = '/article?' .. queryString
local match_url = rewrite_urls[uri]
if match_url then
-- ngx.redirect(match_url) -- url
ngx.exec(match_url) -- url
return true
end
return false
end
return _M
url 은 당기 사이트 에 국한 되 지 않 고 도 메 인 이름 을 뛰 어 넘 을 수 있 습 니 다. 예 를 들 어 흔히 볼 수 있 는 장면 입 니 다. 컴퓨터 사 이 드 웹 페이지 는 핸드폰 사 이 드 에서 방문 할 때 다른 도 메 인 이름 이나 페이지 로 조정 하여 모 바 일 에서 더 잘 표시 할 수 있 습 니 다. 예 를 들 어
local agent = ngx.var.http_user_agent
if agent ~= nil then
local m, ret = ngx.re.match(agent, "Android|webOS|iPhone|iPod|BlackBerry")
if m ~= nil then
-- rewrite ... , ,
end
예제 코드 데모 10 부분 참조
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.