2010-03-09 116 views
0

我有一个Web应用程序,有50个客户端使用的一组文件,每个站点的所有配置都来自它们各自目录中的config.php文件。这是通过PHP解析URL完成的。这一切工作正常,只是有自定义上传文件的客户端可以做,位于Apache Rewrite:目录树到子域目录

/无功/网络/网站/用户1 /缓存

可以有多个子目录的问题。因此,请求 http://user1.site.com/cache/subdir1/image.jpg 时,它需要从 /var/www/sites/user1/cache/subdir1/image.jpg

允许客户端上传任何文件类型看,所以我只需要重写采取任何/缓存请求,然后抓住子域并指向正确的目录。

想出了这个,但我仍然得到一个无效页

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^([^\.]+)\.site\.com$ 
RewriteRule ^cache/(.*)$ /sites/%1/cache/$1 [L] 

任何帮助表示赞赏。

回答

0

在/ var/WWW /是文件在文件系统中的位置。我是根据文档根目录进行路由,所以我不需要将其放在那里。但是我意识到我错过了/ cache /中的前导斜杠。虽然你的回答并不是我所期待的,但这让我明白我错过了什么。谢谢。

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^([^\.]+)\.site\.com$ 
RewriteRule ^/cache/(.*)$ /sites/%1/cache/$1 [L] 
0

如果我正确读取the RewriteRule documentation,L标志本身会生成一个内部重定向,这意味着替换将被解释为本地文件系统路径。

尝试使用完整的路径:

RewriteRule ^cache/(.*)$ /var/www/sites/%1/cache/$1 [L]

或做一个外部重定向(使用HTTP返回状态“302临时移动”),让与用户的浏览器重新发送请求新的路径:

RewriteRule ^cache/(.*)$ /sites/%1/cache/$1 [L,R]