我们可以使用.htaccess更改include_once路径吗?

时间:2012-02-14 09:17:17

标签: php .htaccess

我在实时服务器和本地服务器上有一个站点的副本。这些文件包含很多包含路径的文件,如下所示:

require_once "/long/path/on/server/to/the/site/functions.php";

本地服务器将此文件和其他类似文件放在同一目录中

现在不是改变文件上的所有这些路径,而是考虑使用.htaccess。这样我就可以将htaccess文件保留在本地,并且在上传到实时服务器时不必一直更改路径。

关于这个的任何想法?

4 个答案:

答案 0 :(得分:2)

创建符号链接。这使它变得干净简单。并且可以轻松集成到您的项目中。

对于* nix,您可以使用:

ln -s /path/to/original/ /path/to/linkName

对于Windows(如果文件系统是NTFS),您可以使用:

mklink [/D] drive:/path/to/orignal drive:/path/to/linkName

答案 1 :(得分:0)

您可以为路径定义常量:

define('ROOT_PATH', '/long/path/on/server/to/the/site/');
require_once ROOT_PATH . "functions.php";

或者您可以更改包含路径

set_include_path('/long/path/on/server/to/the/site/');
require_once "functions.php";

答案 2 :(得分:0)

为了让您的生活更轻松,为什么不实施自动加载器:

class AutoLoader
{
    public function loadLibFile($class)
    {
        $filename = '/long/path/on/server/to/the/site/' . $class . '.php';

        if (!is_readable($filename)) {
            return false;
        }

        include($filename);
    }
}

$autoloader = new AutoLoader();

spl_autoload_register(array($autoloader, 'loadLibFile'));

答案 3 :(得分:0)

通常,您甚至不需要为此配置Web服务器配置,因为默认情况下已在正确配置的服务器中定义了这样的变量。

require_once $_SERVER['DOCUMENT_ROOT']."/functions.php";

将在任何环境中加载适当的文件。

尽管如此,您可以使用SetEnv指令设置任何环境变量,并在PHP脚本中从$ _SERVER数组中读取它。

但是,您不应该在整个脚本中使用此变量 更好的做法是使用它来创建一个将在以后使用的常量 你可以通过mace创建这个恒定的条件,取决于环境。

对于具有单一入口点的系统,事情变得更加容易:您可以使用入口点脚本地址构建根路径。