php实现指定域名
实现指定域名访问的方法
在PHP中,可以通过多种方式实现指定域名的访问控制。以下是几种常见的实现方法:
检查HTTP_HOST
通过检查$_SERVER['HTTP_HOST']变量,可以限制只有特定域名才能访问:
$allowed_domains = ['example.com', 'www.example.com'];
if (!in_array($_SERVER['HTTP_HOST'], $allowed_domains)) {
header('HTTP/1.1 403 Forbidden');
exit('Access denied');
}
使用.htaccess文件
在Apache服务器上,可以通过.htaccess文件实现域名限制:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ - [F,L]
通过PHP配置文件
在PHP配置文件中(如config.php),可以定义允许的域名:
define('ALLOWED_DOMAIN', 'example.com');
if (strpos($_SERVER['HTTP_HOST'], ALLOWED_DOMAIN) === false) {
die('Invalid domain');
}
使用CORS头控制
如果需要API接口只允许特定域名访问,可以设置CORS头:
header('Access-Control-Allow-Origin: https://example.com');
header('Access-Control-Allow-Methods: GET, POST');
header('Access-Control-Allow-Headers: Content-Type');
验证Referer
在某些情况下,可以检查HTTP Referer来限制域名:
if (isset($_SERVER['HTTP_REFERER'])) {
$referer = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
if ($referer !== 'example.com') {
die('Invalid referer');
}
}
注意事项
- HTTP_HOST可能被伪造,在生产环境中应结合其他验证方式
- 对于重要功能,建议使用服务器级别的配置而非仅依赖PHP
- CORS设置只影响浏览器端的跨域请求,不影响直接服务器请求
以上方法可以根据具体需求选择使用或组合使用,以实现更安全的域名访问控制。







