多年来,我在许多CMS项目中使用了类似的方法。它对于快速开发非常有效,但确实存在一些问题。
如果您可以相信web服务器(apache、nginx)配置正确,那么可以使用$_SERVER[\'SERVER_NAME\']
检索Web服务器配置的主机名。(参考:https://stackoverflow.com/questions/2297403/http-host-vs-server-name)
也就是说,HTTP\\U主机当然更灵活!
如果我不能控制服务器配置,我通常会指定一组可以设置的“允许的”主机,以及一个合理的默认值。例如:
/**
* Site Host URLs
*/
$hostname = $_SERVER[\'HTTP_HOST\'];
if(!empty($_SERVER[\'HTTP_X_FORWARDED_HOST\'])) {
$hostname = $_SERVER[\'HTTP_X_FORWARDED_HOST\'];
}
$hostname = rtrim($hostname, \'/\');
$allowed = [\'www.foo.com\', \'dev.foo.com\', \'staging.foo.com\'];
if (!in_array($hostname, $allowed)) {
$hostname = \'www.foo.com\';
}
$protocol = (!empty($_SERVER[\'HTTPS\']) || !empty($_SERVER[\'HTTP_X_FORWARDED_PROTO\'] == \'https\'))
? \'https://\'
: \'http://\';
$siteUrl = $protocol . $hostname;
define(\'WP_HOME\', $siteUrl);
define(\'WP_SITEURL\', $siteUrl);