Переменная apache RewriteCond для частей REQUEST_URI

Я перевожу статический 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]

Как я могу этого достичь?

2 ответа

Решение

Тебе понадобиться RewriteCond обратные_связи. Пожалуйста, смотрите руководство для деталей.

Грубо (но у меня нет возможности проверить это в данный момент):

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

%1 это RewriteCond обратная ссылка, в отличие от RewriteRule обратная ссылка (которая будет $1)

Работает таким образом

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

(но, к сожалению, я забыл, что есть еще один уровень subdir непосредственно под docroot, который apache не может знать.)

Я хочу выяснить, если я установлю псевдоним пути drupal для всех документов верхнего уровня - я посмотрю

Другие вопросы по тегам