2016-03-01 71 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中的內容;( –