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

1353
groovehunter

Я перевожу статический 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/% -f RewriteRule (.*)$ /sites/mydomain.xyz/files/$1 [R] 

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

0

2 ответа на вопрос

2
0xC0000022L

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

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

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

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

0
groovehunter

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

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

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

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

Вы можете редактировать свой оригинальный вопрос. В любом случае, если вам нужны некоторые условные выражения, вы можете использовать [E: VARNAME: value] в своих правилах, чтобы устанавливать переменные в зависимости от определенных условий, а затем использовать их внутри других правил (или, как правило, в другом месте) ... 0xC0000022L 13 лет назад 0