![Apache .shared 文件夹](https://linux22.com/image/597612/Apache%20.shared%20%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我的 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_rewrite
apache2 模块并遵循以下规则。以下内容可以放在虚拟主机配置中,也可以放在.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”。