Apache重写:目录树到子域目录
我有一个web应用程序,它有一组由50多个客户端使用的文件,每个站点的所有配置都来自各自目录中的config.php文件。这是通过PHP解析URL实现的。所有这些都可以正常工作,只是客户端可以执行的自定义上传文档存在问题 /var/www/sites/user1/cache 可以有多个子曲面。所以当要求 它需要从中读取 /var/www/sites/user1/cache/subdir1/image.jpg 客户机可以上传任何文件类型,所以我只需要重写以获取任何/cache请求,然后抓取子域并指向适当的目录 想出了这个,但我仍然得到一个无效的页面Apache重写:目录树到子域目录,apache,mod-rewrite,Apache,Mod Rewrite,我有一个web应用程序,它有一组由50多个客户端使用的文件,每个站点的所有配置都来自各自目录中的config.php文件。这是通过PHP解析URL实现的。所有这些都可以正常工作,只是客户端可以执行的自定义上传文档存在问题 /var/www/sites/user1/cache 可以有多个子曲面。所以当要求 它需要从中读取 /var/www/sites/user1/cache/subdir1/image.jpg 客户机可以上传任何文件类型,所以我只需要重写以获取任何/cache请求,然后抓取子域并指
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^\.]+)\.site\.com$
RewriteRule ^cache/(.*)$ /sites/%1/cache/$1 [L]
非常感谢您的帮助。如果我阅读正确,L标志本身将生成一个内部重定向,这意味着替换将被解释为本地文件系统路径
尝试使用完整路径:
重写规则^cache/(.*)$/var/www/sites/%1/cache/$1[L]
或者执行外部重定向(使用HTTP返回状态“302暂时移动”),以允许用户的浏览器使用新路径重新发送请求:
RewriteRule^cache/(.*)$/sites/%1/cache/$1[L,R]
var/www/是文件系统中文件所在的位置。我是基于文档根进行路由的,所以我不需要把它放在那里。但我意识到我错过了/cache/上的前导正斜杠。虽然你的答案不是我真正想要的,但它让我看到了我错过了什么。谢谢
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^\.]+)\.site\.com$
RewriteRule ^/cache/(.*)$ /sites/%1/cache/$1 [L]