Gần đây tôi muốn trỏ tất cả các miền phụ cho một miền thử nghiệm, giả sử example.com đến localhost. Có cách nào để trỏ tất cả các yêu cầu trên * .example.com đến 127.0.0.1 không
Câu trả lời:
Nó xảy ra rằng /etc/hosts
tệp không hỗ trợ các mục nhập thẻ đại diện.
Bạn sẽ phải sử dụng các dịch vụ khác như dnsmasq. Để bật nó trong dnsmasq, chỉ cần chỉnh sửa dnsmasq.conf
và thêm dòng sau:
address=/example.com/127.0.0.1
Đây là cấu hình cho những người đang cố gắng hoàn thành mục tiêu ban đầu (các ký tự đại diện đều trỏ đến cùng một cơ sở mã - không cài đặt gì, môi trường nhà phát triển tức là, XAMPP)
tệp: / etc / hosts (không phải cửa sổ)
127.0.0.1 example.local
tệp: /XAMPP/etc/httpd.conf
# Virtual hosts
Include etc/extra/httpd-vhosts.conf
tệp: XAMPP / etc / extra / httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin admin@example.local
DocumentRoot "/path_to_XAMPP/htdocs"
ServerName example.local
ServerAlias *.example.local
# SetEnv APP_ENVIRONMENT development
# ErrorLog "logs/example.local-error_log"
# CustomLog "logs/example.local-access_log" common
</VirtualHost>
khởi động lại apache
lưu dưới dạng bất kỳ thứ gì. pac ở bất cứ đâu bạn muốn và sau đó tải tệp trong mạng của trình duyệt> proxy> cài đặt cấu hình tự động (tải lại nếu bạn thay đổi điều này)
function FindProxyForURL(url, host) {
if (shExpMatch(host, "*example.local")) {
return "PROXY example.local";
}
return "DIRECT";
}
sử dụng dnsmasq
giả vờ bạn đang sử dụng một bản phân phối dựa trên debian (ubuntu, mint ..), hãy kiểm tra xem nó có được cài đặt với
(sudo) systemctl status dnsmasq
Nếu nó chỉ bị tắt, hãy bắt đầu nó với
(sudo) systemctl start dnsmasq
Nếu bạn phải cài đặt nó, hãy viết
(sudo) apt-get install dnsmasq
Để xác định miền cần giải quyết, hãy chỉnh sửa /etc/dnsmasq.conf
như thế này
address=/example.com/127.0.0.1
để giải quyết * .example.com
! Bạn cần tải lại dnsmasq để các thay đổi có hiệu lực!
systemctl reload dnsmasq