我想拒绝通过浏览器访问文件
就像有人尝试访问www.site1.com/log.txt
它应该将他重定向到www.site1.com/site.html
<Files log.txt>
Order allow,deny
Deny from all
Redirect http://site1.com/site.html
</Files>
答案 0 :(得分:0)
您可以使用简单的重定向规则执行此操作:
RewriteEngine on
RewriteRule ^/?log\.txt$ /site.html [R=301]
但这是值得怀疑的,它是尝试治愈症状而不是解决原因。问自己一个问题:为什么该文件恰好位于您明确发布的服务器端文件系统的那一部分中?这些内部文件位于http服务器发布的区域外部。
如果您真的不能分离已发布的文件和未发布的文件,另一种方法是在内部将 all 请求重写为某些路由脚本,从而具有很大的灵活性。
如果您要继续上述方法,请考虑以下其他提示:
一个好主意是从302临时重定向开始,然后在确定一切正确设置之后,才将其更改为301永久重定向。这样可以防止在尝试时缓存问题...
此规则将同样在HTTP服务器主机配置或动态配置文件内(“htaccess的”文件)工作。显然,重写模块需要加载到http服务器内部并在http主机中启用。如果使用动态配置文件,则需要注意在主机配置中完全启用了它的解释,并且该解释位于主机的DOCUMENT_ROOT
文件夹中。
还有一个一般性说明:您应该始终喜欢将此类规则放置在http服务器主机配置中,而不要使用动态配置文件(“ .htaccess”)。这些动态配置文件增加了复杂性,通常是导致意外行为,难以调试的原因,并且确实降低了http服务器的速度。仅当您无法访问真正的http服务器主机配置(阅读:真正便宜的服务提供商)或坚持编写自己的规则的应用程序(这显然是安全的噩梦)时,才提供它们作为最后的选择。