Nginx가 한 경로를 다른 경로로 리디렉션 방법은 무엇입니까? 예 : 이전 페이지 http://sitedomain.co.uk/content/unique-page-name 새 페이지 http://sitedomain.co.uk/new-name/unique-page-name 유의하시기

나는 이것이 이전에 요청되었다고 확신하지만 작동하는 솔루션을 찾을 수 없습니다.

웹 사이트에서 CMS 서비스를 전환했지만 도메인이 동일합니다. 단일 페이지에 대해 nginx 다시 쓰기를 설정하는 방법은 무엇입니까?

예 :

이전 페이지

http://sitedomain.co.uk/content/unique-page-name

새 페이지

http://sitedomain.co.uk/new-name/unique-page-name

유의하시기 바랍니다 내가 콘텐츠 페이지 내에서 모든 리디렉션되고 싶지 않아,하지만 말 그대로 그냥 URL이 위에서 언급 한. 설정에 약 9 개의 리디렉션이 있는데 그중 하나는 패턴에 맞지 않습니다.

감사!

편집 : 슬래시없이 리디렉션한다는 사실을 제외 하고는이 솔루션이 작동하는 것으로 나타났습니다.

if ( $request_filename ~ content/unique-page-name/ ) {
   rewrite ^ http://sitedomain.co.uk/new-name/unique-page-name/? permanent;
}

그러나 이것은 다음으로 리디렉션됩니다.

http://sitedomain.co.uknew-name/unique-page-name/



답변

함정 및 일반적인 실수 에서 직접 인용 : 과세 재 작성 :

return 지시문을 사용하면 정규 표현식의 평가를 완전히 피할 수 있습니다.

영구 리디렉션 return대신 사용하십시오 rewrite. 이 사용 사례에 대한 나의 접근 방식은 다음과 같습니다.

location = /content/unique-page-name {
  return 301 /new-name/unique-page-name;
}


답변

피할 수 있으면 if 문을 사용하지 않는 것이 이상적입니다. 이와 같은 것이 작동 할 수 있습니다 (예상되지 않음).

location ~ /content/(.*)$ {
    rewrite ^ /new-name/$1?$args permanent;
}


답변

나는 다음 해결책을 사용했다 :

rewrite ^(/content/unique-page-name)(.*)$   http://sitedomain.co.uk/new-name/unique-page-name/$2 permanent;

치료를합니다.


답변

나를 위해 다음과 같이 등호없이 작동했습니다.

location /old-url {
  return 301 /new-url;
}


답변