Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WordPress htaccess-限制对文件的访问(例外)_Wordpress_.htaccess_Exception - Fatal编程技术网

WordPress htaccess-限制对文件的访问(例外)

WordPress htaccess-限制对文件的访问(例外),wordpress,.htaccess,exception,Wordpress,.htaccess,Exception,我试图保护我的文件不受wp content/uploads 3个子文件夹中未登录用户的影响,但我必须对文件夹1中文件名以“partner-”开头的文件例外 因此,对于folder1,我将处理异常: folder1/partner-filename.jpg folder1/partner-filename2.jpg folder1/partner-filename3.jpg ... 谁能帮我在htacces中如何定义这样的异常 为了保护我的3个文件夹不被未登录的用户访问,我已经使用了以下方法

我试图保护我的文件不受wp content/uploads 3个子文件夹中未登录用户的影响,但我必须对文件夹1中文件名以“partner-”开头的文件例外

因此,对于folder1,我将处理异常:

  • folder1/partner-filename.jpg
  • folder1/partner-filename2.jpg
  • folder1/partner-filename3.jpg ...
谁能帮我在htacces中如何定义这样的异常

为了保护我的3个文件夹不被未登录的用户访问,我已经使用了以下方法:

(更新)


你目前拥有的,甚至还不应该正确地完成工作…你已经将所有这些条件与或结合在一起,因此如果找不到cookie值,这将在任何请求的URL上获得403,不管它是否包含这三个文件夹名称中的任何一个。使用RewriteConds进行这种基本路径检查从IMHO开始是毫无意义的,这一部分应该由RewriteRule处理,带有交替模式,如
^(folder1 | folder2 | folder3)/
谢谢@CBroe!我修复了不必要的或操作员。你能告诉我你打算如何在没有任何重写条件的情况下编写重写规则吗?(我不清楚)这并不能解决问题。现在,第三个和第四个条件由一个隐式and绑定在一起,并且由于该绑定强于OR,因此您仍然会拒绝任何请求/folder1或/folder2的人的访问,无论他们是否设置了此cookie。并且您尝试对其中的cookie值进行的检查也不够。首先,仅仅存在一个名称以
wordpress\u logged\u开头的cookie
并不意味着您实际上有一个登录用户-任何人都可以发送一个具有此名称的cookie。HTTP_COOKIE包含所有COOKIE,其顺序是不可预测的-因此,一旦在该网站上使用了多个COOKIE,您也不能期望登录的
wordpress_位于该值的开头,甚至不应该正确地执行此工作…您已经将所有这些条件与或连接起来,因此如果找不到cookie值,无论它是否包含这三个文件夹名称中的任何一个,这将使您在任何请求的URL上获得403。使用RewriteConds从IMHO开始执行此类基本路径检查没有多大意义,该部分应该由重写规则处理,带有交替模式,如
^(folder1 | folder2 | folder3)/
谢谢@CBroe!我修复了不必要的或操作员。你能告诉我你打算如何在没有任何重写条件的情况下编写重写规则吗?(我不清楚)这并不能解决问题。现在,第三个和第四个条件由一个隐式and绑定在一起,并且由于该绑定强于OR,因此您仍然会拒绝任何请求/folder1或/folder2的人的访问,无论他们是否设置了此cookie。并且您尝试对其中的cookie值进行的检查也不够。首先,仅仅存在一个名称以
wordpress\u logged\u开头的cookie
并不意味着您实际上有一个登录用户-任何人都可以发送一个具有此名称的cookie。HTTP_COOKIE包含所有COOKIE,其顺序是不可预测的——因此,一旦在该网站上使用了多个COOKIE,您也不能期望登录的wordpress_位于该值的开头。
RewriteCond %{REQUEST_URI} folder1 [OR]
RewriteCond %{REQUEST_URI} folder2 [OR]
RewriteCond %{REQUEST_URI} folder3 
RewriteCond %{HTTP_COOKIE} !^.wordpress_logged_in.$ [NC]
RewriteRule . – [R=403,L]