![REQUEST_URI 部分的 apache RewriteCond 變數](https://rvso.com/image/1267752/REQUEST_URI%20%E9%83%A8%E5%88%86%E7%9A%84%20apache%20RewriteCond%20%E8%AE%8A%E6%95%B8.png)
我將靜態 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 路徑別名 - 我會看到