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

fallback aliased directory for static files that don't exist

当前配置:

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

示例URL:

http://okdemo/wcsstore/test.txt

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

尝试过:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/wcsstore/(.*) /wcsstore-old/ [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 单词?

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

要删除 "wcstore",请使用 rewriteCond 拆分字符串,然后使用 %1 代替原始变量

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