![자주 업데이트되는 정적 사이트의 임시 리디렉션(302, 307)](https://rvso.com/image/770088/%EC%9E%90%EC%A3%BC%20%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8%EB%90%98%EB%8A%94%20%EC%A0%95%EC%A0%81%20%EC%82%AC%EC%9D%B4%ED%8A%B8%EC%9D%98%20%EC%9E%84%EC%8B%9C%20%EB%A6%AC%EB%94%94%EB%A0%89%EC%85%98(302%2C%20307).png)
선택적 배경(XY 문제를 방지하기 위해):나는 와 같은 URL을 포함하는 정적 사이트에서 작업하고 있습니다
www.example.com/książka/
. 해당 URL의 문제점은 URL을 공유하거나 IM 프로그램에 붙여넣을 때 분음 부호 문자가 확장되어%<hex>
읽을 수 없게 된다는 것입니다www.example.com/ksi%C4%85%C5%BCka/
. 그래서 저는 다음을 고려하고 있습니다.
- 페이지의 표준 URL을 다음과 같이 설정합니다.
www.example.com/ksiazka/
("ąż"는 "az"로 대체됨)- 에 임시 리디렉션(HTTP 302 또는 307)을 반환합니다
www.example.com/książka/
.작동하지 않는 것:
자동 주소 다시 쓰기. 이유: "ąż"에서 "az"로 변경하는 것이 아니라 "az"에서 "ąż"로 변경하거나 "ąz", "aż", "áz" 또는 기타 여러 가능성 중 하나로 변경하는 것입니다. 리디렉션은 기존 페이지의 전체 목록을 알고 있는 페이지 생성 중에 생성되어야 하며, 따라서 "ksiazka"가 "książką"가 아닌 "książka"로 리디렉션되어야 함을 알 수 있습니다.
페이지당 1개의 HTTP 리디렉션을 구성해야 합니다. 새 기사를 업로드할 때마다 새로운 HTTP 리디렉션이 하나씩 필요합니다.
NGINX 구성을 편집하려면 루트 액세스가 필요하며 일반 사용자의 권한으로 사이트를 배포하고 있습니다. Apache에서는 에 몇 가지 지시문을 추가할 수 있지만 .htaccess
이는 성능에 문제가 있으며 NGINX에서는 사용할 수 없습니다.
/etc/nginx/sites-available/mysite
즉, 의 내용을 가져오기 위해 포함을 만들 수 있습니다 /home/myuser/mysite/_redirects
. 따라서 서버는 일반 사용자가 제어하는 파일을 읽습니다. 단점은 일반 사용자에게 모든 NGINX 구성 옵션에 대한 액세스 권한을 제공하는 반면 리디렉션만 설정하면 된다는 것입니다.
이 문제를 해결하려면 사용자가 업로드한 파일을 읽고 리디렉션에 필요한 정보만 포함하는 자동화 부분을 작성할 수도 있습니다. Netlify의 파일 과 같은 것입니다 _redirects
. 하지만 이건… 잘못된 것 같아요. 너무 관습적이다.
요약하자면:
- 정적 사이트
- HTTP 302 또는 HTTP 307 필요
- 빈번한 업데이트(수동 편집
/etc/nginx
불가능) - 권한이 없는 시스템 사용자로 업로드된 파일
- 해당 사용자에게 웹 서버에 대해 너무 많은 권한을 부여하지 않음
NGINX에서 이 작업을 수행하는 좋은 방법은 무엇입니까?