![Переменная Apache RewriteCond для частей REQUEST_URI](https://rvso.com/image/1267752/%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%20Apache%20RewriteCond%20%D0%B4%D0%BB%D1%8F%20%D1%87%D0%B0%D1%81%D1%82%D0%B5%D0%B9%20REQUEST_URI.png)
Я переношу статический html-сайт в drupal CMS, большую часть контента я просто скопировал html на данный момент и хочу оставить все как есть и сделать так, чтобы относительные ссылки на pdf-файлы работали. Drupal имеет все файлы в этом каталоге: (Я скопировал все дерево БЫВШИХ ПОДКАТАЛОГОВ - здорово, хочу сохранить это)
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, о котором Apache не может знать.)
Я хочу выяснить, могу ли я задать псевдоним пути Drupal для всех документов верхнего уровня - я посмотрю