从现在开始,所有涉及 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.php、about.php、header.php、footer.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? |
|---|---|---|
| 引入文件 | include, require | ❌ 不用 |
| 跳转链接 | href, src, location.href | ✅ 要用 |
| 表单提交 | action | ✅ 最好用 |
| 图片/视频 | <img src=""> | ✅ 要用 |
你现在需要做的
不改
include 'footer.php'、require_once 'inc/init.php'这类 PHP 文件引入改 所有 HTML 标签中的
href、src属性,加上<?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'; ?>