拒绝访问上载文件夹,但有例外

时间:2016-12-12 作者:leanda

在成员网站上,只有登录的成员才能访问上载文件夹中的文件,如果未登录,则会重定向到登录屏幕。我在中使用了以下内容。htaccess文件执行此操作:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\\.)?http://example\\.com/ [NC]
RewriteCond %{REQUEST_URI} !hotlink\\.(doc|xls|pdf|html|htm|xlsx|docx|mp4|mov|rtf|ppt|pptx) [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule .*\\.(doc|xls|pdf|html|htm|xlsx|docx|mp4|mov|rtf|ppt|pptx)$ http://example.com/member-login/ [NC]
</IfModule>
# END WordPress
这很好,但我现在有一个场景,我需要允许任何人访问上传目录中的一些文件,这些文件将始终从主页链接到。

有没有一种方法可以使用文件名执行此操作?例如,可能只允许访问带有public\\u前缀的文件?

关于如何解决这个问题,还有其他想法吗?

干杯

1 个回复
SO网友:Mark Kaplun

这实际上一点也不好,因为cookie的存在并不表示用户已经登录,甚至不表示他曾经登录过。它所表明的只是有人以某种方式设置了cookie。要知道访问该文件的用户实际上已经登录或曾经登录过,您需要实际验证cookie的内容—这是您无法在其中执行的操作。htaccess。

当然,这对于95%的用例来说已经足够好了,但是如果你“隐藏”了一些可能值“钱”的东西,你应该重新考虑它。

理论上,正确的解决方案是避免将私人信息放在上传目录中,而只有公共信息。检查用户凭据后,您从WordPress中定义的URL(例如特定页面)或使用特殊重写规则提供的私有信息。

为了获得灵感,您可以看看EDD插件是如何将其文件提供给付费用户的。Y