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