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

Apache 如何使用mod_rewrite隐藏实际目录?,apache,mod-rewrite,Apache,Mod Rewrite,我托管了两个相同wordpress安装的域,现在我想有一个每个域的文件夹来存放我需要放在那里的各种文件 基本上我想这样映射: URL Path webbfarbror.se/f/* _files/webbfarbror.se/* grapefrukt.com/f/* _files/grapefrukt.com/* 然而,一个位于say的文件也可以通过它的“真实”URL访问 我所有的尝试都会导致无限的来回重定向 如何禁用通过后一个URL的

我托管了两个相同wordpress安装的域,现在我想有一个每个域的文件夹来存放我需要放在那里的各种文件

基本上我想这样映射:

URL Path webbfarbror.se/f/* _files/webbfarbror.se/* grapefrukt.com/f/* _files/grapefrukt.com/* 然而,一个位于say的文件也可以通过它的“真实”URL访问

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


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

您可以在原始请求发送到服务器时检查该请求,该请求可用作
%{the_request}
。检查
/\u files/
前缀表示请求属于后一种类型,然后可以重定向到适当的格式:

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

这种方法很有效,但由于某些原因,它与子文件夹不匹配,例如:@grapefrukt-Hmm,它在我的测试服务器上似乎可以正常工作。该目录中是否有带有
mod_rewrite
指令的
.htaccess
?结果证明这确实有效,我怀疑我的主机上存在某种重写缓存。谢谢
RewriteCond %{THE_REQUEST} ^[A-Z]+\s/_files/
RewriteRule ^_files/[^/]+/(.*)$ http://%{HTTP_HOST}/f/$1 [R=301,L]