3
我試圖有條件地重寫URI的目錄路徑,如果存在覆蓋並且覆蓋目錄存在於RHEL5上運行的Apache 2.2 .htaccess文件中。RewriteCond -d .htaccess失敗,但目錄存在
我這樣做是通過有條件地設置一個環境變量到一個目錄,然後我檢查是否設置了環境變量和目錄是否存在。這是一個Drupal站點,但不確定是否重要。
RewriteCond %{HTTP_HOST} qa-public.sample.com
RewriteRule^- [ENV=publicFiles:sites/qa-public.sample.com/files]
...
RewriteCond %{ENV:publicFiles} !^$
RewriteCond %{ENV:publicFiles} -d
RewriteRule ^sites/default/files(/.*)$ %{ENV:publicFiles}$1 [PT]
我打開重寫記錄到7級
10.20.67.192 - - [27/Feb/2014:13:16:34 --0500] [qa-public.sample.com/sid#7f631331ecd8][rid#7f631360e568/initial] (4) [perdir /var/www/qa-public/] RewriteCond: input='sites/qa-public.sample.com' pattern='!^$' => matched
10.20.67.192 - - [27/Feb/2014:13:16:34 --0500] [qa-public.sample.com/sid#7f631331ecd8][rid#7f631360e568/initial] (4) [perdir /var/www/qa-public/] RewriteCond: input='sites/qa-public.sample.com' pattern='-d' => not-matched
我使用的perdir
和input
輸出來驗證它的存在。它是一個指向目錄的符號鏈接。
$ ls -l /var/www/qa-public/sites/qa-public.sample.com/files
lrwxrwxrwx 1 XXXXXX YYYYYY 27 Feb 13 14:20 /var/www/qa-public/sites/qa-public.sample.com/files -> /usr/local/files-qa/
我自己也嘗試-l
和-x
。我也嘗試了其他非鏈接目錄。
我曾嘗試在RewriteCond
之前和/或之後的目錄中添加/
。
我可以刪除-d
條件,Apache將提供該文件。
謝謝, 韋斯。
謝謝,這工作。 – Wes
很高興工作。您現在可以將答案標記爲已接受嗎? – anubhava
對不起,我的第一篇文章並不知道接受。 – Wes