根据我以前的经验,我几乎总是遇到将文件链接到我的网站项目的问题。
例如,在PHP中链接CSS样式,Javascript文件和包含文件。问题是,在我的PC上,我的项目目录是/www/project-name/
,当我将项目放在服务器上时,目录只是/www/
。当我将项目上传到服务器时,图像不会显示,样式不起作用,数据库连接没有设置,函数没有定义等等......
所以我的问题是:链接/包含文件的最佳和最有效的方式是什么?
无论项目目录是什么,都会有效,如果我在project/includes/mysql.class.php
中包含file1.php
,并且我将该文件移到另一个目录,它仍然可以正常包含project/includes/mysql.class.php
答案 0 :(得分:1)
您应该使用相对路径。
不使用指定完整路径('/www/project-name/includes/whatever.php'),而是使用相对于当前位置的路径:
'./includes/whatever.php'
答案 1 :(得分:1)
您可以定义项目的文档根目录,然后根据它包含所有文件
把
define(DOC_ROOT, realpath(direname(__FILE__));
前控制器中的,以及必须包含文件时
include(DOC_ROOT . "/includes/file.php");
所有框架都使用此方法
答案 2 :(得分:0)
我建议使用相对路径(例如../style.css或../../style.css) ../将父目录引用到当前文件。
答案 3 :(得分:0)
这就是我的所作所为。
我在html中使用root相对url(例如src="/images/logo.jpg"
)。这样我就可以从一个页面复制html并将其从另一个页面复制,而不必担心链接不起作用,因为另一个页面位于文件夹中。
我在css中的相对url,因为我在css中使用的所有资源,如图像,我保存在与css文件(或其子目录)相同的文件夹中。我主要这样做是因为它更短(url(img/background.jpg);
与url(/css/img/background.jpg);
)。小额添加奖金是你可以复制css文件夹来创建一个基于旧主题的新主题,而不必更改CSS中的所有网址。
在PHP中,我使用include($_SERVER['DOCUMENT_ROOT'] . '/includes/mysql.php');
。您只需将代码复制到另一个文件夹中的另一个文件中,它仍然有效。
我很少需要硬编码路径是在htaccess内部。