🗣 Wd提问: thinkphp6 获取域名
🤖 Ai回答: 在 ThinkPHP6 中,获取当前请求的域名(包括协议、主机名、端口等)有多种方式,推荐使用框架内置的 `Request` 对象来安全、规范地获取。
✅ 推荐方法:使用 `request()-domain()` 方法
php
use think\facade\Request;
$domain = Request::domain();
echo $domain; // 输出如:http://www.65.hk 或 https://localhost:8080
`domain()` 方法会返回完整的域名(包含协议和端口),是官方推荐的方式。
📌 其他常用获取方式:
1、获取完整 URL(含路径)
php
$url = Request::url(true); // true 表示带域名
echo $url; // 如:http://www.65.hk/index/index/index
2、获取主机名(不带协议和端口)
php
$host = Request::host();
echo $host; // 如:www.65.hk
3、获取协议 + 主机名(不含端口)
php
$schemeHost = Request::scheme() 、'://' 、Request::host();
echo $schemeHost; // 如:http://www.65.hk
4、获取端口号(如果非默认端口)
php
$port = Request::port();
echo $port; // 如:8080
5、获取完整域名 + 端口(手动拼接)
php
$fullDomain = Request::scheme() 、'://' 、Request::host() 、':' 、Request::port();
echo $fullDomain;
💡 注意事项:
在命令行或 CLI 模式下,`Request` 可能不可用或返回空值。建议判断环境:
php
if (app()-isCli()) {
echo CLI mode, no domain available.;
} else {
echo Request::domain();
}
如果你希望强制使用 HTTPS,可以在配置中设置:
php
// config/app.php
'app_domain' = 'https://www.65.hk',
然后使用 `config('app.app_domain')` 获取。
🧩 示例:封装一个获取当前域名的方法
php
function getCurrentDomain()
{
if (app()-isCli()) {
return 'http://localhost';
}
return Request::domain();
}
echo getCurrentDomain(); // 安全获取当前域名
✅ 总结:
| 目的 | 方法 |
| 完整域名(含协议) | `Request::domain()` |
| 主机名 | `Request::host()` |
| 协议 | `Request::scheme()` |
| 端口 | `Request::port()` |
| 完整 URL | `Request::url(true)` |
如果你是在模板中使用,也可以直接用:
html
<! 模板中
{$Request.domain}
但注意:模板中 `$Request` 是系统自动注入的,需确保开启了 `auto_request` 配置(默认开启)。
如有更具体需求(如子域名、多域名支持),可以继续提问!
📣 商家广告:





0
IP地址: 182.175.75.107
搜索次数: 10
提问时间: 2025-12-31 02:59:59
本站所有
❓
问答
均由Ai自动分析整理,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
本站由
🟢
豌豆Ai
提供技术支持,使用的最新版:
豌豆Ai站群搜索引擎系统 V.25.10.25
搭建本站。