您好!欢迎访问家园网-www.jy.wang!

家园网

SITE_URL 常量可以彻底解决这类路径问题

网络 作者:本站 点击:

从现在开始,所有涉及 URL 的地方(图片、链接、跳转)都使用 SITE_URL 常量,不要手动写 ../../ 或相对路径。

例如:

  • 前台 href="about.php" → href="<?php echo SITE_URL; ?>about.php"

  • 后台跳转 header('Location: ?mod=...') 可以保留,因为这是相对当前页面的


为什要这样改?

对比相对路径 (about.php)绝对路径 (<?php echo SITE_URL; ?>about.php)
当前项目能正常工作能正常工作
项目移到子目录(如 /ryweb/❌ 可能失效✅ 始终有效
URL 重写/伪静态❌ 可能路径错乱✅ 始终正确
代码可读性隐含依赖当前位置明确指向根目录

一句话:使用 SITE_URL 后,无论你的项目部署在何处,链接永远正确。

你现在应该全面修改

前台文件(index.phpabout.phpheader.phpfooter.php

把所有 href="xxx.php" 改成 href="<?php echo SITE_URL; ?>xxx.php"

示例

php

// header.php 中的导航链接<li><a href="<?php echo SITE_URL; ?>index.php">首页</a></li><li><a href="<?php echo SITE_URL; ?>about.php">公司简介</a></li><li><a href="<?php echo SITE_URL; ?>product.php">产品中心</a></li>// index.php 中的“查看详情”按钮<a href="<?php echo SITE_URL; ?>about.php" class="btn-more">查看详情 →</a>// footer.php 中的链接<a href="<?php echo SITE_URL; ?>contact.php">联系我们</a>

后台文件

后台的链接大多是 ?mod=xxx 这种形式,不需要改,因为它们是相对于当前页面的参数。

图片路径要用 SITE_URL

php

// product_list.php 中的缩略图<img src="<?php echo SITE_URL . h($p['thumb']); ?>">

需要注意的一点

SITE_URL 已经在 inc/config.php 中定义,并且 inc/init.php 已经引入了 config.php,所以所有文件都可以直接使用 SITE_URL,不需要额外引入。

修改清单

文件需要修改的内容
header.php导航菜单的所有 <a href>
footer.php底部的链接
index.php“查看详情”等链接
about.php如果有返回首页等链接
product_list.php图片的 src
product_edit.php图片预览的 src

验证

修改后刷新前台首页,点击“公司简介”链接,看地址栏是否变成 http://localhost/ryweb/about.php

这样做完之后,你的项目就具备了可移植性——无论放到服务器的哪个子目录,甚至换成域名,只需要修改 config.php 中的 SITE_URL 一处,全站链接自动适配。


那首页最后的<?php include 'footer.php'; ?>改不改?需要改成<?php include '<?php echo SITE_URL; ?>footer.php'; ?>吗?



千万不要改! 你这个问题问得非常关键,能避免一个大坑。

核心区别

类型作用使用方式是否需要 SITE_URL
文件路径include/require告诉 PHP 去读取哪个本地文件服务器磁盘路径❌ 不需要
URL 路径href/src告诉浏览器去请求哪个网络地址浏览器访问地址✅ 需要

详细解释

include 'footer.php' 是文件引入

  • 这是在服务器端执行的,PHP 需要去磁盘上找到 footer.php 这个文件

  • 它使用的是文件系统路径,不是 URL

  • SITE_URL 是网络地址(http://...),不适用于文件引入

php

// 正确:相对路径,PHP 能找到当前目录下的 footer.php<?php include 'footer.php'; ?>// 错误:PHP 会去尝试打开一个 HTTP 链接作为文件,肯定失败<?php include 'http://localhost/ryweb/footer.php'; ?>

href="about.php" 是链接地址

  • 这是在浏览器端执行,用户点击后浏览器会发起新的 HTTP 请求

  • 需要使用正确的 URL 地址

  • 使用 SITE_URL 能保证在任何部署路径下都能正确跳转

php

// 正确:使用 SITE_URL 保证路径正确<a href="<?php echo SITE_URL; ?>about.php">// 有隐患:相对路径在项目移动后可能失效<a href="about.php">

简单记忆法

操作关键词用 SITE_URL
引入文件includerequire❌ 不用
跳转链接hrefsrclocation.href✅ 要用
表单提交action✅ 最好用
图片/视频<img src="">✅ 要用

你现在需要做的

  • 不改 include 'footer.php'require_once 'inc/init.php' 这类 PHP 文件引入

  •  所有 HTML 标签中的 hrefsrc 属性,加上 <?php echo SITE_URL; ?>

完成后的 header.php 示例如下:

php

<link rel="stylesheet" href="<?php echo SITE_URL; ?>assets/css/style.css"><a href="<?php echo SITE_URL; ?>index.php">首页</a><a href="<?php echo SITE_URL; ?>about.php">公司简介</a><!-- 注意:下面的 include 不改 --><?php include 'footer.php'; ?>
标签: