2016-03-01 72 views
1

我试图只允许具有某个cookie的用户访问data/party/*。因此我在根目录下扩展了我的.htaccess。最后一部分应该检查子文件夹的URI和cookie的存在。不幸的是,它不会阻止访问。重要说明:我想让webroot中的.htaccess不在子文件夹data/party中。 mod_rewrite已启用。感谢帮助!htaccess阻止访问子文件夹而不存在Cookie

RewriteEngine On 
RewriteRule ^(app|dict|ns|tmp)\/|\.ini$ - [R=404]  
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php [L,QSA] 
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] 

RewriteCond "%{HTTP_HOST}_%{HTTP_REFERER}" "!\.?([^\.]+\.[^\.]+?)_https?://.*\1/.*$" 
RewriteRule \.(woff|eot|ttf|svg|woff2|otf)$ - [F,NC,L] 

# NOT WORKING 
RewriteCond %{REQUEST_URI} ^data/party 
RewriteCond %{HTTP_COOKIE} !AllowDataAccess=YesYouCanBoogie 
RewriteRule .* - [L,F] 

回答

1

你缺少的条件/你可以改变。 REQUEST_URI以一个前导斜杠开始。所以它目前不匹配。

试试这个方法。

RewriteCond %{REQUEST_URI} ^/data/party [NC] 
RewriteCond %{HTTP_COOKIE} !AllowDataAccess=YesYouCanBoogie;? [NC] 
RewriteRule .* - [L,F] 
+0

感谢您的帮助,我做了'的RewriteCond%{REQUEST_URI}^/数据/方[NC]',但仍然可以查看内容 –

+0

我对cookie的条件做了一个小小的调整,看看有没有什么帮助,还可以尝试使用与cookie相同的大小写 –

+0

mh mh mh unfortuantely not。当我把它放在派对目录和参考文件中时,它有效作为'/ party'似乎subdir规则并没有从路由中捕获;( –

1

尝试用:

RewriteCond %{HTTP_COOKIE} !AllowDataAccess=YesYouCanBoogie 
RewriteRule ^data/party - [L,F] 

或您的RewriteCond %{REQUEST_URI} ^/data/party^/

+0

我都尝试,但仍然可以访问,而不cookie中的内容;( –