Nếu ai đó nhập địa chỉ IP của bạn thay vì tên miền của bạn, bạn sẽ muốn máy chủ của mình xử lý yêu cầu đó đúng cách và chuyển hướng chúng đến trang web thực tế. Chúng tôi sẽ giới thiệu cách thiết lập nó trong NGINX và Apache.
Tại sao điều này lại cần thiết?
Đối với gần như mọi yêu cầu, người dùng có thể sẽ sử dụng tên miền của bạn, vì vậy bạn sẽ không thực sự thấy vấn đề này trong thực tế. Nhưng, đó là một sửa chữa dễ dàng,
Bạn có thể thiết lập máy chủ của mình để nghe cụ thể địa chỉ IP của bạn và trả lại chuyển hướng 301 về tên thật của bạn, điều này sẽ khắc phục sự cố và đặt tên trang web của bạn vào thanh URL cho bất kỳ yêu cầu nào chỉ có địa chỉ IP.
Tuy nhiên, một phương pháp tốt hơn và đầy đủ hơn là chỉ cần xử lý tất cả các tuyến khác bằng cách trả lại một chuyển hướng. Bằng cách này, bất kỳ người dùng nào được gửi đến địa chỉ IP của bạn từ bất cứ đâu (ngay cả với các tiêu đề máy chủ sai) sẽ được chuyển hướng. Ví dụ: nếu bạn muốn trỏ các cách viết thay thế của tên miền của mình (ví dụ: dongthoigian.net ), đến tên miền thực của bạn, thì chuyển hướng mặc định này cũng hoạt động.
Thiết lập tuyến mặc định trong NGINX
Nếu bạn chỉ đơn giản muốn nghe trên IP, bạn có thể sử dụng cấu hình sau, trả về chuyển hướng 301 cho các yêu cầu được thực hiện cụ thể cho IP:
server { listen 80; listen [::]:80; server_name 123.123.123.123; add_header X-Frame-Options "SAMEORIGIN"; return 301 https://www.example.com$request_uri; }
Tuy nhiên, bạn có thể đặc biệt lắng nghe các trận đấu không sử dụng server_name _
, chỉ khớp nếu không có quy tắc nào khác. Bạn có thể trả về chuyển hướng 301 theo cùng một cách:
server { listen 80 default_server; listen [::]:80 default_server; server_name _; return 301 https://www.example.com$request_uri; }
Tất nhiên, như với bất kỳ chuyển hướng 301 nào, trước tiên bạn nên kiểm tra với chuyển hướng 302 tạm thời để đảm bảo cấu hình của bạn là chính xác.
Thiết lập tuyến mặc định trong Apache
Trong Apache, bạn có thể chuyển hướng các yêu cầu IP sang tên miền của mình bằng cách thêm quy tắc viết lại phù hợp với IP:
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^123\.123\.123\.123$ RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
Nếu bạn muốn chuyển hướng tất cả các yêu cầu khác, bạn có thể làm như vậy bằng cách khớp mọi thứ không phải là tên miền của bạn, tuy nhiên hãy cẩn thận rằng điều này không xung đột với bất kỳ tên miền phụ nào.
RewriteEngine on RewriteCond %{SERVER_NAME} !=www.example.com RewriteRule ^ https://www.example.com%{REQUEST_URI} [END,NE,R=301]