2012-09-18 31 views
16

Chỉ cần thấy điều này .htaccess viết lại mã"OR" Cờ trong mod_rewrite .htaccess

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^my.domain.com$ [NC,OR] 
RewriteCond %{REQUEST_URI} !public/ 
RewriteRule (.*) /public/$1 [L] 

Và tôi đã tự hỏi mục đích của "OR" cờ là gì. Đã kiểm tra tài liệu http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriteflags nhưng coulnd tìm thấy bất kỳ thông tin nào.

Bất kỳ ý tưởng nào?

Trả lời

28

từ http://httpd.apache.org/docs/current/mod/mod_rewrite.html

ornext|OR (hay điều kiện tiếp theo) Sử dụng này để kết hợp các điều kiện quy tắc với một địa phương HOẶC thay vì ngầm AND. Ví dụ điển hình:

RewriteCond %{REMOTE_HOST} ^host1 [OR] 
RewriteCond %{REMOTE_HOST} ^host2 [OR] 
RewriteCond %{REMOTE_HOST} ^host3 
RewriteRule ...some special stuff for any of these hosts... 
+1

nhờ :) có vẻ như tôi đã có một số rắc rối đọc doc ... –

+1

Nếu bạn nghĩ của 'RewriteCond' như một điều khoản trong một tuyên bố tình trạng như' IF' và cờ '[OR] 'như một logic' || 'thì nó có ý nghĩa đối với một lập trình viên. –

+2

@YzmirRamirez không hoàn toàn giống nhau, [OR] của Apache có ưu tiên cao hơn so với ngôn ngữ ngầm AND - và hầu hết các ngôn ngữ lập trình có ưu tiên cao hơn cho && hơn || - do đó, kết quả là ví dụ trong C 'a && b || c && d' được đánh giá là '(a && b) || (c && d) 'trong khi ở trong điều kiện mod_rewrite của Apache, ngược lại, chi tiết ở đây https://stackoverflow.com/a/31572003/895077 –

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