我将静态 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 路径别名 - 我会看看