![nginx는 /2013/04/test.html을 /test로 리디렉션합니다 - 작동하지 않습니다](https://rvso.com/image/623652/nginx%EB%8A%94%20%2F2013%2F04%2Ftest.html%EC%9D%84%20%2Ftest%EB%A1%9C%20%EB%A6%AC%EB%94%94%EB%A0%89%EC%85%98%ED%95%A9%EB%8B%88%EB%8B%A4%20-%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4.png)
나는 이것 때문에 정신이 나갔어. nginx와 /2013/04/test.html
같은 특정 URL을 어떻게 리디렉션할 수 있나요 ?/test
나는 이것을 시도했지만 작동하지 않습니다.
server {
location /2013/05/test.html {
return 301 http://$server_name/test;
}
}
몇 가지 테스트를 수행했습니다. 어떤 이유로 구성 줄의 위치 부분에 .html 확장자가 없는 URL은 올바르게 리디렉션되지만 kaboom 위치에 .html을 배치하자마자 작동이 중지됩니다.
왜 이런지 아세요? 감사합니다!
답변1
각 리디렉션에 대한 위치 블록을 갖는 대신 언제든지 기존 위치 블록에 다시 쓰기 규칙을 추가할 수 있습니다.
rewrite /2013/05/test.html http://$server_name/test permanent;
rewrite /2013/05/test2.html http://$server_name/test2 permanent;
또한, 새로운 '영구 링크'가 추가될 때마다 새로운 정규식을 추가하지 않아도 되도록 다양한 정규 표현식을 사용할 수 있습니다.
답변2
나는 Jason Ilicic의 의견에 동의합니다.규칙 다시 작성아마도 더 효율적일 것입니다.
정말로 사용하고 싶다면위치 블록, "=" 수정자를 사용해 보셨나요? 여러 위치가 있는 경우 Nginx 선택 논리가 예상한 것과 다른 위치를 선택할 수 있습니다.
Nginx 문서에서
using the “=” modifier it is possible to define an exact match of URI and location
예를 들면
server {
location = /2013/05/test.html {
return 301 http://$server_name/test;
}
}