2009-04-07 27 views
5

/foo/.htaccess làm chuyển hướng nội bộCách thực hiện công việc này? RewriteCond% {ENV: UNIQUE_ID}! {QUERY_STRING}%

RewriteRule ^(.*)$ /bar/?%{ENV:UNIQUE_ID} 

/bar/.htaccess cần phải nhận ra rằng yêu cầu là KHÔNG nội bộ, vấn đề là tôi không thể tìm ra cách để làm cho việc so sánh

RewriteCond %{ENV:UNIQUE_ID} !%{QUERY_STRING} 

thậm chí là một

RewriteCond %{QUERY_STRING} %{QUERY_STRING} 

sẽ không phù hợp, tôi giả sử có một vấn đề cú pháp trong o bên phải f biểu thức, thoát% không giúp đỡ.

Tôi đã thử nghiệm rằng trên cả hai biến có cùng giá trị trên một chuyển hướng nội bộ như

RewriteRule ^(.*)$ /test/%{QUERY_STRING}/%{ENV:UNIQUE_ID} 

sẽ hiển thị nó.

Máy chủ là Apache/2.2.3

Cảm ơn, Laurian

Trả lời

15

Đáng buồn là bạn không thể so sánh hai biến trực tiếp với mod_rewrite. (Hoặc ít nhất tôi không biết làm thế nào để làm điều này một trong hai.)

Nhưng có một cách giải quyết cho việc này:

RewriteCond %{ENV:UNIQUE_ID}:%{QUERY_STRING} !^(.+):\1$ 

tôi chọn : như tách nhưng bạn có thể sử dụng bất kỳ dấu phân cách khác nếu bạn muốn. Và nếu bạn có thể chỉ định cấu trúc của các giá trị UNIQUE_ID, bạn nên làm điều đó.

+1

Điều này rất hữu ích! Tôi đã không nhận ra rằng bạn có thể kết hợp nhiều giá trị môi trường như thế. –

+0

Thực ra đây là điều phải biết! Cảm ơn! – greydet

0

Nếu liên kết giới thiệu không giống với miền bạn đang truy cập, chẳng hạn như lần đầu tiên một người truy cập nhưng không sử dụng liên kết trong trang web của riêng bạn, bạn có thể kiểm tra HTTP_REFERRER. Kỹ thuật tương tự được sử dụng để ngăn chặn liên kết nóng đến hình ảnh.

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