2013-10-15 20 views
6

Có thể áp dụng các quy tắc viết lại khác nhau cho các địa chỉ IP khác nhau chỉ bằng một tệp .htaccess không?htaccess: các quy tắc viết lại khác nhau cho các địa chỉ IP khác nhau

tôi có những quy tắc:

RewriteEngine on 
#RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.123 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

#RewriteRule ^(.*)$ /version/1.0/index.php?r=$1 [L] 
RewriteRule ^(.*)$ /version/2.0/index.php?r=$1 [L] 

Cả hai quy tắc cuối cùng làm việc tốt, và tôi có thể chọn cái nào để kích hoạt. Tôi muốn bằng cách nào đó kích hoạt một quy tắc cho chính mình để làm việc trên phiên bản phát triển và quy tắc khác cho sản xuất.

Tôi có thể sử dụng tính năng lọc địa chỉ IP bằng cách nào đó không? Điều đó thậm chí có thể? Có giải pháp thay thế nào khác để tôi có thể có cả hai quy tắc được bật, một cho sự phát triển của tôi và một quy tắc khác để sản xuất? Cảm ơn!

Trả lời

3

Hãy thử:

RewriteEngine on 

RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.123 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /version/1.0/index.php?r=$1 [L] 

RewriteCond %{REMOTE_ADDR} ^123\.456\.789\.123 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /version/2.0/index.php?r=$1 [L] 

Bạn cần phải lặp lại trong các điều kiện viết lại. Mỗi bộ RewriteCond chỉ áp dụng cho số ngay sau RewriteRule. Vì vậy, nguyên tắc đầu tiên sẽ được áp dụng cho tất cả mọi người không được đánh máy chủ web từ địa chỉ IP: 123.456.789.123

+0

Chỉ cần hoàn hảo. Còn gì để nói nữa. Cảm ơn! – gradosevic

0

Bạn cũng có thể sử dụng này:

Options All -Indexes 
RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.123 
RewriteRule ^(.*)$ /version/1.0/index.php?r=$1 [L,QSA] 

RewriteCond %{REMOTE_ADDR} ^123\.456\.789\.123 
RewriteRule ^(.*)$ /version/2.0/index.php?r=$1 [L,QSA] 
+0

Điều này sẽ không hoạt động vì quy tắc thứ hai hiện sẽ kích hoạt các tệp và thư mục hiện có. Nhìn vào giải pháp của @ JonLin. –

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