2017-10-12 35 views
1

我有以下结构:隐藏于公众的目录访问,但允许通过重写规则

public_html/ 
    hidden_directory/ 
    sub_folder/ 
     sample_file.txt 
     other_file.txt 
    another_folder/ 
     another_file.txt 

我的最终目标,只有通过重定向到有hidden_directory可见的内容。我第一次尝试将它们放在public_html之外是不成功的。然后我尝试你在上面看到的结构,其重定向像

RewriteRule ^sub/(.*) hidden_directory/sub_folder/$1 [L] 

访问过:

http://mysite/sub/sample_file.txt 

这伟大的工作给我,我从文件位置和URL我想想要的内容。但我不喜欢这样的文件也可从以下

​​

我做一个

deny from all 
hidden_directory

,并已停止直接访问像我想要的,但它也打破了重写。

是否有任何htaccess解决方案,我可以将这些文件放在不能直接访问的文件夹中,但仍然可以通过重写进行访问?

回答

1

是否有任何htaccess解决方案,我可以让这些文件在一个文件夹中不可直接访问,但仍然可以重写?

是使用基于THE_REQUEST变量规则来阻止到hidden_directory直接访问:

RewriteEngine On 

# block direct access to a given path 
RewriteCond %{THE_REQUEST} \s/+hidden_directory[/?\s] [NC] 
RewriteRule^- [F] 

RewriteRule ^sub/(.*)$ hidden_directory/sub_folder/$1 [L,NC] 

THE_REQUEST变量代表从您的浏览器Apache接收到原始请求,它的一些执行后不会被覆盖重写规则。此变量的示例值为GET /index.php?id=123 HTTP/1.1

+1

这样做了!谢谢! –

相关问题