우리 웹서버에서 디렉토리가 한 위치에서 다른 위치로 "복사"되었습니다. 이제 원래 위치는 사라졌지만 새 위치로의 리디렉션을 제공하라는 요청을 받고 있습니다.

가능한 경우 다른 방법을 사용하는 것은 아니지만 mod_rewrite가 이를 수행하는 가장 좋은 방법이라고 생각합니다. URL 체계는 이렇습니다.

Old URL: www.exampleurl.com/subdir1/olddirectory/subdir2
New URL: www.exampleurl.com/subdir1/newdirectory/subdir2

Subdir1은 변경되지 않으므로 .com 부분은 무시할 수 있습니다. 그러나 subdir2 디렉토리는 종종 직접 액세스되며 다양한 옵션이 있습니다.

우리는 이미 mod_rewrite를 사용하여 SSL/TLS를 통해 모든 트래픽을 리디렉션하므로 계속 사용하는 것이 가장 효과적일 것입니다.

지금까지의 의견과 답변을 바탕으로 여기에 누락된 정보가 있다고 생각합니다. 문제의 사이트와 디렉토리가 매우 기본적인 수준에서 구성되는 방법은 다음과 같습니다. 이것이 추가 답변에 도움이 되기를 바랍니다.

사이트는 HTTP 및 HTTPS에 대한 두 파일의 두 VirtualHost 구성 사이에 분산되어 있습니다. HTTP VirtualHost에는 모든 트래픽이 HTTPS 포트로 리디렉션되도록 하는 mod_rewrite 조건과 규칙이 포함되어 있습니다. 문제의 디렉토리는 conf-enabled 내의 별도 파일에 구성됩니다. 둘 다 별칭 선언과 디렉토리 영역을 포함합니다. NFS 마운트 시 실제 파일이 /mnt 디렉토리 내에 있으므로 별칭이 필요합니다.

answer

mod_rewrite를 사용하면 다음과 같이 할 수 있습니다.

RewriteRule ^/?(subdir1)/olddirectory(?:$|/)(.*) https://www.example.com/$1/newdirectory/$2 [R=301,L]

위의 내용은 다음과 같이 리디렉션됩니다.

  • /subdir1/olddirectory 에게 /subdir1/newdirectory/
  • /subdir1/olddirectory/ 에게 /subdir1/newdirectory/
  • /subdir1/olddirectory/<something> 에게 /subdir1/newdirectory/<something>

그리고 HTTPS + 표준 호스트 이름으로 리디렉션하므로 리디렉션 수를 최소화하기 위해 기존 표준 리디렉션 앞에 배치할 수 있습니다 .

캐싱 문제를 피하기 위해 302(임시) 리디렉션으로 먼저 테스트합니다.