2013-10-15 27 views
7

Tôi muốn ai đó giúp tôi với câu lệnh if-else trong htaccess. Những gì tôi muốn là htaccess để đọc một cookie và kiểm tra xem giá trị của nó bằng một giá trị xác định. Nếu nó đánh giá sai, nó sẽ thực hiện chuyển hướng và ngăn không cho thư mục được yêu cầu được truy cập. Có thể một sự phủ nhận từ tất cả sẽ tốt hơn nếu đánh giá trả về sai.htaccess so sánh giá trị cookie và chuyển hướng nếu đánh giá trả về true/false

Tôi biết rằng mã sau sẽ kiểm tra xem giá trị cookie được đặt tên có được đặt hay không. Nếu nó không được thiết lập, nó sẽ thực thi quy tắc viết lại bên dưới nó. Nhưng làm thế nào tôi có thể điều chỉnh dòng này để nó kiểm tra nếu nó bằng một giá trị nhất định?

RewriteEngine On 
RewriteCond %{HTTP_COOKIE} !^.*cookie_name.*$ [NC] 
RewriteRule .* http://www.google.com [NC,L] 

Những gì tôi muốn, nhưng trong phong cách .htaccess:

if ($_COOKIE['cookie_name'] != 'specific_value'){ 
//rewrite_rule or deny from all. 
} 
+0

bản sao có thể có của [Cách thực hiện chuyển hướng htaccess dựa trên giá trị cookie] (http://stackoverflow.com/questions/3978726/how-to-do-htaccess-redirect-based-on-cookie-value) – mavrosxristoforos

+0

@ mavrosxristoforos. Nó không phải là một bản sao như tôi đang thực sự cố gắng để so sánh các giá trị Và không chỉ đơn giản là kiểm tra nếu cookie được thiết lập hay không. Mã của htaccess tôi đã đăng đã làm điều đó. –

Trả lời

9

Bạn đang gần . Chuỗi Cookie cần một =:

RewriteEngine On 
RewriteCond %{HTTP_COOKIE} !cookie_name=specific_value; [NC] 
RewriteRule^http://www.google.com [NC,L] 
1

Bạn có thể sử dụng mã này để kiểm tra cho giá trị cụ thể trong cookie:

RewriteEngine On 

RewriteCond %{HTTP_COOKIE} !cookie_name=specific_value [NC] 
RewriteRule^http://www.google.com [NC,L,R=302] 
5

Thay required_value với giá trị mà cần phải được xuất hiện.

RewriteEngine On 
RewriteCond %{HTTP_COOKIE} !cookie_name=required_value;? [NC] 
RewriteRule^http://www.google.com [R=301,L] 

;? đảm bảo rằng trận đấu sẽ xảy ra cả khi có nhiều cặp giá trị cookie hoặc khi cookie_name là bộ cookie duy nhất. Điều này cũng ngăn không cho khớp với giá trị cookie như off khi bắt buộc đối sánh với chỉ of (chuỗi con).

Các vấn đề liên quan