Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache重写:目录树到子域目录_Apache_Mod Rewrite - Fatal编程技术网

Apache重写:目录树到子域目录

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请求,然后抓取子域并指

我有一个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]