htaccess阻止访问子文件夹而不存在cookie

时间:2016-03-01 21:35:45

标签: .htaccess

我尝试仅允许具有特定Cookie的用户访问data/party/*。因此我在root目录中扩展了我的.htaccess。最后一部分应该检查子文件夹的URI和cookie的存在。不幸的是它没有阻止访问。重要提示:我希望webroot中的.htaccess不在子文件夹data/party中。 mod_rewrite已启用。谢谢你的帮助!

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]

2 个答案:

答案 0 :(得分:1)

尝试:

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

或者您可以更改RewriteCond %{REQUEST_URI} ^/data/party^/

答案 1 :(得分:1)

您在条件中缺少/。 REQUEST_URI以前导斜杠开头。所以它目前还不匹配。

以这种方式试试。

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