Apache .shared 文件夹

Apache .shared 文件夹

我的 Apache 配置中已经有很多规则。我想添加以下内容。有一些共享文件夹 (.shared):/var/www/.shared/ 和 /var/www/.include/.shared/ 以及 /var/www/.include/(.*)/.shared/。现在当有人访问http://domain.com/test.png它首先执行现有的 apache 规则,并且(当未找到文件/文件夹时)查找那些 .shared 文件夹。

假设我有这个文件系统:/var/www/.shared/dog.png /var/www/.shared/test.gif 和 /var/www/domain.com/dog.png。现在当有人访问http://domain.com/test.gif,它必须从 .shared 文件夹加载 test.gif。现在当有人访问http://domain.com/dog.png它必须从 domain.com 文件夹加载 dog.png(因为现有的 apache 规则将首先执行)。

答案1

您应该使用mod_rewriteapache2 模块并遵循以下规则。以下内容可以放在虚拟主机配置中,也可以放在.htaccess您的网站中的文件DocumentRoot

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} (/.*)/([^/]+)
RewriteRule ^(.*)$ %1/.shared/%2

这本质上是检查文件是否存在,如果不存在则拆分REQUEST_URI看起来像...

/directory/sub/directory/file.png

分为 2 部分,第一部分位于两个斜杠 '/' 之间,没有第二个斜杠,第二部分有文件.png部分 。

/directory/sub/directory file.png

然后,您就可以在想要发送用户到的新请求路径中插入“.shared”。

相关内容