REQUEST_URI 部分的 apache RewriteCond 变量

REQUEST_URI 部分的 apache RewriteCond 变量

我将静态 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 之下还有另一级子目录,apache 无法知道。)

我想弄清楚是否为所有顶级文档设置了 drupal 路径别名 - 我会看看

相关内容