REQUEST_URI 부분에 대한 Apache RewriteCond 변수

REQUEST_URI 부분에 대한 Apache RewriteCond 변수

정적 html 사이트를 drupal CMS로 마이그레이션합니다. 대부분의 콘텐츠는 지금은 html을 복사했고 그대로 두고 pdf 파일에 대한 상대 링크를 작동시키려고 합니다. Drupal은 이 디렉토리에 모든 파일을 가지고 있습니다: (나는 FORMER SUB DIRS의 전체 트리를 복사했습니다 - 좋아요, 그것을 유지하고 싶습니다)

 DOCROOT/sites/mydomain.xyz/files/FORMER/SUB/DIRS/filename.pdf

따라서 CMS 콘텐츠의 모든 상대 링크는 이제 다음과 같습니다.

 http://mydomain.xyz/node/FORMER/SUB/DIRS/filename.pdf

파일이 존재하는지 확인한 다음 URL을 다시 작성하고 싶습니다.

RewriteEngine On
RewriteCond     /var/www/mydomain.xyz/sites/mydomain.xyz/files/%{REQUEST_URI MINUS "node/"} -f
RewriteRule     (.*)$ /sites/mydomain.xyz/files/$1  [R]

어떻게 그걸 달성할 수 있나요?

답변1

역참조가 필요합니다 RewriteCond. 참조하세요매뉴얼자세한 내용은.

대략적으로(그러나 지금은 테스트할 방법이 없습니다):

RewriteCond     %{REQUEST_URI MINUS} ^/node(.*)
RewriteCond     /var/www/mydomain.xyz/sites/mydomain.xyz/files/%1 -f
...

역 참조( ) 와 반대 되는 역참조 %1입니다 .RewriteCondRewriteRule$1

답변2

그런 식으로 작동

RewriteCond     %{REQUEST_URI} ^/node(.*)
RewriteCond     /var/www/schottdorf.de/sites/schottdorf.de/files%1 -f
RewriteRule     .* /sites/schottdorf.de/files/%1  [L]

(하지만 불행하게도 아파치가 알 수 없는 docroot 바로 아래에 다른 수준의 하위 디렉터리가 있다는 사실을 잊어버렸습니다.)

모든 최상위 문서에 대해 drupal 경로 별칭을 설정했는지 확인하고 싶습니다. 살펴보겠습니다.

관련 정보