Apache:将多个目录映射到同一位置

Apache:将多个目录映射到同一位置

我想使用 Apache 将多个目录映射到同一位置,期望出现类似以下行为:假设该位置由目录和/static支持。然后,如果请求,我希望 Apache 按顺序检查文件和。返回找到的第一个文件;如果未找到任何文件,则返回经典错误 404。/srv/static1/srv/static2/static/image.png/srv/static1/image.png/srv/static2/image.png

当然,一种解决方案是使用脚本创建指向正确位置的符号链接目录,然后使用这个目录,例如在指令中Alias。我想知道是否有更直接的方法,不需要我部署额外的机器。

谢谢!

答案1

使用 mod_rewrite 可以轻松完成此操作。您可以设置一个条件,如果文件在第一个目录中不存在,则它应该在第二个目录中查找,依此类推。

以下是一个简短的示例配置;有关更多信息,请参阅典型的 mod_rewrite 问题apache 的 mod_rewrite 文档

RewriteEngine on

# first try to find it in dir1/...
# ...and if found stop and be happy:
RewriteCond %{DOCUMENT_ROOT}/dir1/%{REQUEST_URI} -f
RewriteRule ^(.+) %{DOCUMENT_ROOT}/dir1/$1 [L]

# second try to find it in dir2/...
# ...and if found stop and be happy:
RewriteCond %{DOCUMENT_ROOT}/dir2/%{REQUEST_URI} -f
RewriteRule ^(.+) %{DOCUMENT_ROOT}/dir2/$1 [L]

# else go on for other Alias or ScriptAlias directives,
# etc.
RewriteRule ^ - [PT] 

相关内容