2010-09-14 40 views
0

我主持一对夫妇同WordPress安装的域,现在我想有每个站点文件夹,我需要把在那里的一些各种文件。如何使用mod_rewrite隐藏实际目录?

基本上我要地图是这样的:

 
URL      Path 
webbfarbror.se/f/*  _files/webbfarbror.se/* 
grapefrukt.com/f/*  _files/grapefrukt.com/* 

这个小片断很好地做工作和的RewriteCond让我启用和禁用此在每个域的基础。

ReWriteCond %{HTTP_HOST} webbfarbror.se 
ReWriteRule ^f/(.*)$ _files/%{HTTP_HOST}/$1 [L] 

但是,比如说,http://grapefrukt.com/f/awesome.jpg文件也可以访问它的“真实”的URL http://grapefrukt.com/_files/grapefrukt.com/awesome.jpg

我所有的尝试导致无限重定向来回。

如何禁用通过后者URL访问?

回答

1

,因为它被发送到服务器,这可以作为%{THE_REQUEST}您可以检查原始请求。检查的/_files/前缀表示该请求是后一种类型的,然后你就可以重定向到相应的格式:

RewriteCond %{THE_REQUEST} ^[A-Z]+\s/_files/ 
RewriteRule ^_files/[^/]+/(.*)$ http://%{HTTP_HOST}/f/$1 [R=301,L] 
+0

这类作品,但由于某种原因它不会匹配的子文件夹,如:HTTP ://grapefrukt.com/_files/grapefrukt.com/games/ – grapefrukt 2010-09-14 12:53:45

+0

@grapefrukt - 嗯,它似乎在我的测试服务器上正常工作。在那个目录中是否有'.htaccess'和'mod_rewrite'指令可能? – 2010-09-14 17:24:48

+0

事实证明这确实工作,我怀疑有一种缓存的重写正在我的主机上进行。谢谢! – grapefrukt 2010-09-24 07:12:06