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 路徑別名 - 我會看到

相關內容