![REQUEST_URI 부분에 대한 Apache RewriteCond 변수](https://rvso.com/image/1267752/REQUEST_URI%20%EB%B6%80%EB%B6%84%EC%97%90%20%EB%8C%80%ED%95%9C%20Apache%20RewriteCond%20%EB%B3%80%EC%88%98.png)
정적 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
입니다 .RewriteCond
RewriteRule
$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 경로 별칭을 설정했는지 확인하고 싶습니다. 살펴보겠습니다.