后备别名目录,用于不存在的静态文件

时间:2015-07-17 10:25:49

标签: mod-rewrite ibmhttpserver

当前配置:

Alias   /wcsstore       "/opt/IBM/WebSphere/AppServer/profiles/demo/installedApps/WC_demo_cell/WC_demo.ear/Stores.war"

示例网址:

http://okdemo/wcsstore/test.txt

如何让它首先查找现有文件/opt/IBM/test/test.txt并使用原始目录作为后备?

尝试:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/wcsstore/(.*) /wcsstore-old/$1 [PT,L]

Alias   /wcsstore       "/opt/IBM/test"
Alias   /wcsstore-old       "/opt/IBM/WebSphere/AppServer/profiles/demo/installedApps/WC_demo_cell/WC_demo.ear/Stores.war"

但似乎REQUEST_FILENAME无法解析为/opt/IBM/test/test.txt。所有东西都来自后备目录:

RewriteCond: input='/wcsstore/test.txt' pattern='!-f' => matched

也许我应该连接:/opt/IBM/test%{REQUEST_URI},但是如何在连接之前删除/wcsstore字?

1 个答案:

答案 0 :(得分:0)

在虚拟主机上下文中,REQUEST_FILENAME与请求URL相同,因为尚未映射任何内容。您可以使用%{DOCUMENT_ROOT} /作为前缀,或任何其他显式路径。

要删除“wcstore”,请使用rewriteCond拆分字符串,然后使用%1而不是原始变量

RewriteCond %{REQUEST_URI} ^/wcsstore/(.*)
RewriteRule /var/www/.../%1 ! -f