我有一个Web应用程序,其中包含50个以上客户端使用的一组文件,每个站点的所有配置都来自各自目录中的config.php文件。这是通过PHP解析URL来完成的。所有这一切都很好,只是客户端可以做的自定义上传文档有问题,并且位于
的/ var / WWW /站点/用户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 :(得分:0)
如果我正确读取the RewriteRule documentation,L标志本身会生成内部重定向,这意味着替换将被解释为本地文件系统路径。
尝试使用完整路径:
RewriteRule ^cache/(.*)$ /var/www/sites/%1/cache/$1 [L]
或执行外部重定向(使用HTTP返回状态“302 MOVED TEMPORARILY”),让用户的浏览器使用新路径重新发送请求:
RewriteRule ^cache/(.*)$ /sites/%1/cache/$1 [L,R]
答案 1 :(得分:0)
/ var / www /是文件系统上文件的位置。我是基于文档根路由,所以我不需要把它放在那里。但我意识到我错过了/ cache /上的前导斜杠。虽然你的回答并不是我想要的,但它让我看到了我所缺少的东西。感谢。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^\.]+)\.site\.com$
RewriteRule ^/cache/(.*)$ /sites/%1/cache/$1 [L]