You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Smarty模板(.tpl)中实现指定域名判断逻辑

在Smarty模板中判断指定域名的正确实现

正确的基础写法

直接使用Smarty全局变量,注意使用普通引号而非HTML实体转义的引号:

{if $smarty.server.HTTP_HOST == 'myexamdomain.com'}
    <!-- 这里编写你的业务逻辑 -->
{/if}

你之前写法失效的常见原因及解决办法

  • 引号转义错误:你代码里的&quot;是HTML实体转义字符,Smarty会把它当作字符串的一部分处理,导致无法匹配正确域名,直接替换成单引号或双引号即可。
  • 大小写不匹配:部分环境下HTTP_HOST的值可能存在大小写差异(比如MyExamDomain.com),如果需要忽略大小写匹配,使用lower修饰符:
    {if $smarty.server.HTTP_HOST|lower == 'myexamdomain.com'}
        <!-- 忽略大小写的逻辑代码 -->
    {/if}
    
  • 域名带端口号:如果访问时附带了端口(比如myexamdomain.com:8080),直接匹配纯域名会失败,可通过正则兼容这种场景:
    {if preg_match('/^myexamdomain\.com(:\d+)?$/', $smarty.server.HTTP_HOST)}
        <!-- 兼容带端口的判断逻辑 -->
    {/if}
    
  • Smarty全局变量权限限制:若你的环境禁用了$smarty.server这类全局变量的直接访问,可在PHP端手动传递变量:
    // PHP代码中赋值
    $smarty->assign('current_host', $_SERVER['HTTP_HOST']);
    
    然后在模板中使用:
    {if $current_host == 'myexamdomain.com'}
        <!-- 业务逻辑 -->
    {/if}
    

内容的提问来源于stack exchange,提问作者Aldhy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:31:02