如何使用mod_rewrite隐藏实际目录?

时间:2010-09-14 10:48:08

标签: apache mod-rewrite

我正在托管几个相同wordpress安装的域名,现在我想为每个域文件夹提供一些我需要放在那里的各种文件。

基本上我想这样映射:

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的文件也可通过“真实”网址http://grapefrukt.com/_files/grapefrukt.com/awesome.jpg

访问

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

如何通过后一个URL禁用访问?

1 个答案:

答案 0 :(得分:1)

您可以检查发送到服务器的原始请求,该请求以%{THE_REQUEST}的形式提供。检查/_files/前缀表示请求属于后一种类型,然后您可以重定向到适当的格式:

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