2008-11-16 25 views
12

Về cơ bản, tôi sắp bắt đầu làm việc trên một trang web và tôi muốn một thứ gì đó mà tôi có thể thêm vào tệp .htaccess của mình (hoặc ở nơi khác) sẽ hoạt động như mã giả này: (ip của tôi sẽ được ở vị trí của 127.0.0.1)Bạn muốn chuyển hướng tất cả khách truy cập trừ tôi

if (visitors_ip <> 127.0.0.1) 
    redirectmatch ^(.*)$ http://www.example.com/under-construction.html 

Hy vọng rằng có ý nghĩa ...

Trả lời

20

đó sẽ là something like:

RewriteEngine On 
RewriteBase/
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1 

RewriteCond %{REQUEST_URI} !/mypage\.html$ 

RewriteRule .* http://www.anothersite.com/mypage.html [R=302,L] 

Như Andrew điểm ra,% { YÊU CẦU_ Điều kiện URI} tránh vòng lặp vô hạn nếu bạn chuyển hướng đến cùng một tên miền.

Như Xorax comments almost 9 years later:

Bạn không nên sử dụng REMOTE_HOST, nó sẽ thất bại trong nhiều trường hợp. Bạn nên sử dụng REMOTE_ADDR.
Cf "difference between REMOTE_HOST and REMOTE_ADDR"

+0

Bây giờ IPv6 đang ở trong hình, tôi thấy có trường hợp địa chỉ IP cục bộ đi qua như :: 1, không phải lúc nào cũng 127.0.0.1 - không chắc chắn khi nào và tại sao, nhưng để xử lý mà tôi nghĩ bạn cần một điều kiện bổ sung: 'RewriteCond% {REMOTE_HOST}!^:: 1' Dấu hai chấm không nên yêu cầu thoát - không phải là ký tự đặc biệt cho regex động cơ viết lại, tôi không tin. –

+0

Bạn không nên sử dụng REMOTE_HOST, nó sẽ không thành công trong nhiều trường hợp. Bạn nên sử dụng REMOTE_ADDR. https://stackoverflow.com/questions/3812166/difference-between-remote-host-and-remote-addr – Xorax

+0

@Xorax Cảm ơn. Tôi đã sửa đổi câu trả lời 9 tuổi của tôi. – VonC

0

Hãy cẩn thận với phương pháp này.

Tôi đã bị đốt cháy bằng cách sử dụng phương pháp dựa trên IP để giới hạn quyền truy cập và sau đó mất hợp đồng thuê trên địa chỉ IP của tôi.

Tất nhiên bạn luôn có thể ssh vào hộp được đề cập và thay đổi tệp .htaccess một lần nữa, nhưng 5 phút hoảng sợ trong khi bạn cố gắng tìm hiểu những gì vừa xảy ra không thật sự thú vị nếu bạn không mong đợi nó xảy ra.

Tôi khuyên bạn nên sử dụng .htaccess (kết hợp với tệp htpasswd) để yêu cầu thông tin xác thực để truy cập trang web phát triển của bạn.

Một ví dụ điển hình trong số đó là ở đây: http://aplawrence.com/foo-web/htaccess-authentication.html

+0

Ya cảm ơn, điểm tốt nhưng tôi sẽ không giữ dòng này trong hơn một hoặc hai tuần. –

+0

Tùy thuộc vào cách mạng của bạn được thiết lập, thời gian thuê của bạn có thể ngắn hơn nhiều. –

3

Đây là giải pháp tôi đã kết thúc sử dụng, lưu ý rằng nó cũng tương tự như VonC của ngoại trừ việc gây ra ông một vòng lặp vô hạn nếu bạn chọn để chuyển hướng đến cùng một tên miền.

RewriteEngine On 
RewriteBase/
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1 
RewriteCond %{REQUEST_URI} !/coming-soon\.html$ 
RewriteRule .* http://www.andrewgjohnson.com/coming-soon.html [R=302,L] 

Nó cũng cần lưu ý rằng 302 là một động thái tạm thời và nên được sử dụng thay vì không có gì hoặc 301.

+0

Tôi vừa thêm điều kiện viết lại thêm vào câu trả lời của tôi, để được triệt để. – VonC

2
<IfModule mod_rewrite.c> 
RewriteEngine On 
# Redirect all except allowed IP 
ReWriteCond %{REMOTE_ADDR} !^000\.000\.000\.001$ 
RewriteCond %{REMOTE_ADDR} !000\.000\.000\.002$ 
ReWriteCond %{REMOTE_ADDR} !^000\.000\.000\.003$ 
RewriteRule (.*) http://YourOtherWebsite.com/$1 [R=301,L] 
</IfModule> 

trước wordpress của bạn IfModule này sẽ chuyển hướng tất cả mọi người ngoại trừ địa chỉ ip 3 trong câu hỏi.

Bạn chỉ cần ftp vào trang web và chỉnh sửa tệp .htaccess nếu địa chỉ IP của bạn thay đổi.

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