dede如何获取当前域名?

99ANYc3cd6
预计阅读时长 9 分钟
位置: 首页 DEDE建站 正文

使用 DedeCMS 全局变量(推荐)

DedeCMS 在全局中定义了一个非常重要的变量 $cfg_basehost,它专门用来存储网站的基础域名,www.example.com,这个变量在系统初始化时就已经设置好了,是获取域名的最标准、最可靠的方式。

dede获取当前域名
(图片来源网络,侵删)

代码示例:

<?php
// 获取当前域名(不包含协议,如 www.example.com)
$domain = $cfg_basehost;
// 输出结果
echo $domain;
?>

完整示例(在模板文件中使用):

假设你想在首页的 <head> 部分输出一个 canonical 标签,可以使用以下代码:

templets/default/head.htm 文件中找到 <head> 标签,在里面添加:

<link rel="canonical" href="<?php echo $cfg_basehost; ?>/"/>

这样就会输出类似 <link rel="canonical" href="http://www.example.com/"/> 的代码。


使用 PHP 原生 $_SERVER 超全局变量

你也可以直接使用 PHP 的 $_SERVER 超全局变量来获取域名信息,这比 $cfg_basehost 更底层,也更灵活,但需要注意一些细节。

dede获取当前域名
(图片来源网络,侵删)

常用的 $_SERVER 键值:

  • $_SERVER['HTTP_HOST']:获取当前请求的 Host 头部信息,这是最常用也是最直接获取当前域名的方式,它通常包含端口号(www.example.com:8080)。
  • $_SERVER['SERVER_NAME']:获取服务器配置中定义的主机名,通常和 HTTP_HOST 一致,但在某些情况下(比如通过 IP 访问)可能会有所不同。
  • $_SERVER['REQUEST_URI']:获取当前请求的 URI(路径和查询字符串),/index.php?cat=1

代码示例:

<?php
// 1. 获取 HTTP_HOST(推荐)
$http_host = $_SERVER['HTTP_HOST'];
echo $http_host; // 输出: www.example.com 或 www.example.com:8080
// 2. 获取 SERVER_NAME
$server_name = $_SERVER['SERVER_NAME'];
echo $server_name; // 输出: www.example.com
// 3. 获取完整的 URL(包含协议)
$full_url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
echo $full_url; // 输出: http://www.example.com/index.php
?>

如何处理带端口号的域名?

如果你使用 $_SERVER['HTTP_HOST'] 并且不想包含端口号,可以使用 explode() 函数来处理:

<?php
$http_host = $_SERVER['HTTP_HOST'];
$domain = explode(':', $http_host)[0]; // 按 ':' 分割并取第一部分
echo $domain; // 无论输入是 www.example.com 还是 www.example.com:8080,都输出 www.example.com
?>

方法对比与选择

特性 $cfg_basehost (DedeCMS) $_SERVER['HTTP_HOST'] (PHP)
来源 DedeCMS 系统全局变量,由系统配置决定。 PHP 超全局变量,由当前 HTTP 请求决定。
可靠性 ,它基于你在 DedeCMS 后台设置的“站点根网址”,不受用户输入或复杂 URL 重写的影响。 中等,直接来自请求,可能被伪造(虽然不常见),也可能包含端口号。
易用性 非常简单,直接使用,无需额外处理。 灵活,但可能需要额外代码(如去除端口号)。
适用场景 绝大多数情况,尤其是在模板文件、PHP 文件中需要获取网站基础域名时,这是最佳选择。 当你需要获取当前请求的精确 Host(比如处理多端口服务)或者不依赖 DedeCMS 环境时。
  • 在 DedeCMS 模板(.htm 文件)或 PHP 文件中需要获取网站域名时,请优先使用 $cfg_basehost 这是最符合 DedeCMS 设计规范、最稳定可靠的方法。
  • 如果你需要获取当前请求的、可能包含端口号的精确主机名,或者在进行一些与 HTTP 请求细节相关的开发时,可以使用 $_SERVER['HTTP_HOST']

对于你的问题“dede获取当前域名”,答案就是 $cfg_basehost

dede获取当前域名
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
织梦小程序接口开发如何实现?
« 上一篇 04-18
strerror函数如何返回错误信息字符串?
下一篇 » 04-18

相关文章

取消
微信二维码
支付宝二维码

目录[+]