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

如何通过.htaccess设置网站文档根目录及解决PHP绝对路径问题?

解决方案

1. 用.htaccess配置站点根与路径基准

在你用作临时预览的目标目录下创建.htaccess文件,通过重写规则将该目录设为站点的有效根目录,统一路径解析逻辑:

RewriteEngine On
# 填写当前目录相对于主机账户根的路径(比如文件存在于/preview/demo-site/就写这个)
RewriteBase /preview/demo-site/

# 可选:如果需要路由转发(比如单页场景),添加以下规则
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

这个配置会让所有以/开头的链接(例如/css/style.css)自动指向你设置的目录,而非主机账户的根目录。

2. PHP端定义动态站点根常量,统一引用逻辑

为了让PHP引用和资源链接自动适配当前目录,在head.php的最顶部添加常量定义:

// 自动获取当前脚本所在目录相对于主机根的路径,适配任意部署位置
define('SITE_ROOT', rtrim(dirname($_SERVER['SCRIPT_NAME']), '/'));

之后所有资源引用和PHP文件包含都通过这个常量拼接路径:

  • CSS/JS资源引用:
    <link rel="stylesheet" href="<?php echo SITE_ROOT; ?>/css/bootstrap.min.css">
    <script src="<?php echo SITE_ROOT; ?>/js/main.js"></script>
    
  • 复用文件引用:
    <?php include SITE_ROOT . '/menu.php'; ?>
    <?php include SITE_ROOT . '/footer.php'; ?>
    

无论你把整个目录搬到虚拟主机的哪个位置,SITE_ROOT都会自动匹配当前目录路径,无需手动修改任何链接。

3. 注意事项

  • 确认虚拟主机允许使用.htaccess且开启了RewriteEngine(主流虚拟主机默认支持);
  • 如果动态获取路径出现异常,也可以直接手动硬编码常量值(比如define('SITE_ROOT', '/preview/demo-site')),适配临时预览的快速需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:33:20