我有以下结构:
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中提供了我想要的内容。但我不喜欢那些文件也可以从以下网址获得:
http://mysite/hidden_directory/sub_folder/sample_file.txt
我确实做了
deny from all
在hidden_directory
中的,并且停止了我想要的直接访问,尽管它也打破了重写。
是否有任何htaccess解决方案我可以将这些文件放在一个文件夹中,该文件夹无法直接访问但仍可通过重写进行访问?
答案 0 :(得分: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