Không thực sự có một giải pháp động 100% - tôi cũng đang cố gắng tìm ra nó và do các phần mở rộng tên miền (DTL) khác nhau, nhiệm vụ này sẽ thực sự khó khăn nếu không thực sự phân tích cú pháp tất cả các phần mở rộng này và kiểm tra chúng mỗi lần:
.com vs .co.uk vs org.uk
Tùy chọn đáng tin cậy nhất là xác định một hằng số (hoặc mục nhập cơ sở dữ liệu, v.v.) lưu trữ tên miền thực và xóa nó khỏi việc $_SERVER['SERVER_NAME']
sử dụngsubstr()
defined("DOMAIN")
|| define("DOMAIN", 'mymaindomain.co.uk');
function getSubDomain() {
if (empty($_SERVER['SERVER_NAME'])) {
return null;
}
$subDomain = substr($_SERVER['SERVER_NAME'], 0, -(strlen(DOMAIN)));
if (empty($subDomain)) {
return null;
}
return rtrim($subDomain, '.');
}
Bây giờ nếu bạn đang sử dụng chức năng này, http://test.mymaindomain.co.uk
nó sẽ cung cấp cho bạn test
hoặc nếu bạn có nhiều cấp miền phụ, http://another.test.mymaindomain.co.uk
bạn sẽ nhận được another.test
- tất nhiên trừ khi bạn cập nhật DOMAIN
.
Tôi hi vọng cái này giúp được.