Переменная 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 для всех документов верхнего уровня - я посмотрю