PHP实现返回按钮仅非首页显示的问题求助(含URL重写场景)
解决方案:正确判断首页并控制返回按钮显示
方法1:结合PHP_SELF与REQUEST_URI判断
由于你通过.htaccess隐藏了.php扩展名,仅靠脚本文件名判断会失效,需要结合实际请求路径综合判断:
<?php // 获取当前执行的脚本文件名(去掉.php后缀) $current_script = basename($_SERVER['PHP_SELF'], '.php'); // 清理请求URI的首尾斜杠 $request_uri = trim($_SERVER['REQUEST_URI'], '/'); // 判断是否为首页:脚本是index,且请求路径为beta根目录或beta/index $is_home = ($current_script === 'index') && in_array($request_uri, ['beta', 'beta/index']); if (!$is_home): ?> <!-- 你的返回按钮HTML --> <button onclick="window.history.back()">返回</button> <?php endif; ?>
方法2:直接基于请求URI判断
如果站点根路径固定为/beta/,可以简化判断逻辑:
<?php $request_uri = $_SERVER['REQUEST_URI']; // 匹配首页的两种请求形式:根目录访问、index路径访问 $is_home = $request_uri === '/beta/' || $request_uri === '/beta/index'; if (!$is_home): ?> <button onclick="window.history.back()">返回</button> <?php endif; ?>
方法3:自定义常量标记(适合多页面项目)
在每个页面的顶部(或公共引入的配置文件)定义常量:
// index.php中 define('IS_HOME', true); // contact.php、news.php等非首页中 define('IS_HOME', false);
然后在头部模板中直接判断:
<?php if (!IS_HOME): ?> <button onclick="window.history.back()">返回</button> <?php endif; ?>
关键注意事项
- 隐藏扩展名后,
$_SERVER['REQUEST_URI']会显示去掉.php后的路径,而$_SERVER['PHP_SELF']仍会保留实际执行的脚本文件名(带.php),两者结合才能准确判断。 - 如果你的
.htaccess有特殊重写规则,需要根据实际生成的请求路径调整$is_home的判断条件。
内容的提问来源于stack exchange,提问作者Noquierona
相关产品推荐
相关产品推荐

