其中的绝对路径包含localhost

时间:2012-04-03 22:39:22

标签: php include localhost

所有

我的问题是关于我在尝试为我的DOCTYPE部分添加通用php模板时遇到的问题。我的DOCTYPE包含(恰当地标题为doctype.php)位于/ template目录中,还包括指向我希望所有页面都可访问的CSS和JS文件的调用。

因此,当我尝试编写这些文件的绝对路径(CSS和JS文件)时会遇到问题。目前,我正在尝试:

<script type="text/javascript" src="<?php echo $_SERVER['DOCUMENT_ROOT'] . '/file/extension/to/javascript/file.js'; ?>"></script>

<link rel="stylesheet" type="text/css" href="<?php echo $_SERVER['DOCUMENT_ROOT'] . 'file/extension/to/css/file.css'; ?>"

我在我的localhost上通过WAMP运行应用程序。 看一下源代码,好像链接指向相应的文件(c:/wamp/www/examplesite/path/to/file/file.ext),一切都应该很好。但它不是......

无法访问JavaScript且样式表无法正常运行。我不知道该怎么做。

我也尝试过: - 在不使用PHP的情况下编写绝对路径 - 创建PHP变量以保存文档根目录,然后连接相应的目录路径以访问文件。

有什么建议吗?当我将目录结构上传到我的在线服务器而不是我当前的本地主机时,这将如何改变?

4 个答案:

答案 0 :(得分:4)

您可能想要尝试$ _SERVER ['HTTP_REFERER']。它为您提供了您正在寻找的路径。

在使用WAMP的本地计算机上,我使用<?php print_r($_SERVER); ?>查看它给出的值。

此外,代码段中可能存在一些拼写错误。例如,您不需要您给出的第一个示例中的前导/。

例如:

<script type="text/javascript" src="<?php echo $_SERVER['HTTP_REFERER'] . 'file/extension/to/javascript/file.js'; ?>"></script>
<link rel="stylesheet" type="text/css" href="<?php echo $_SERVER['HTTP_REFERER'] . 'file/extension/to/css/file.css'; ?>"></link>

或者由于在某些情况下无法信任HTTP_REFERER,您可能需要创建一个构建绝对路径基本部分的函数。

<?php
function getAddress() {
    $protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
    $filenamepattern = '/'.basename(__FILE__).'/';
    return $protocol.'://'.$_SERVER['HTTP_HOST'].preg_replace($filenamepattern,"",$_SERVER['REQUEST_URI']);
 } 
?>

然后这样称呼它:

<script type="text/javascript" src="<?php echo getAddress() . 'file/extension/to/javascript/file.js'; ?>"></script>
<link rel="stylesheet" type="text/css" href="<?php echo getAddress() . 'file/extension/to/css/file.css'; ?>"></link>

答案 1 :(得分:1)

当然,任何类型的资源(JS,CSS,图像等)都必须通过http(s)请求进行访问,因此无法使用绝对路径直接访问它们。想一想这种方法的安全含义。因此,您必须始终使用相对于Web根目录的Web路径。

例如:

<script type="text/javascript" src="http://localhost/myproject/media/ja/file.js"></script>

答案 2 :(得分:1)

当您使用URL时(例如:http://localhost/some/path/to/file),您使用文件路径(例如:C:\ some \ path \ to \ file)指向本地计算机上的文件。 HTML由客户端的浏览器解析,因此当它尝试访问不是URL的路径时,它就不能。

您可以使用绝对网址,例如

,而不是使用$ _SERVER ['DOCUMENT_ROOT']
<script type="text/javascript" src="/path/to/my/file.js"></script>

其中“/ path”文件夹是您的基本Web目录,或者您可以根据文件所包含的doctype.php文件所在的当前目录使用相对URL。我建议不要做后者,因为这是一个很难跟踪的屁股。

如果使用相对URL,则在将代码移动到新主机时应该没有问题,前提是目录结构保持不变。

答案 3 :(得分:0)

您在页面中包含文件的方式错误,您应该使用HTTP URLS:

<script type="text/javascript" src="/file/extension/to/javascript/file.js"></script>

或者,如果您更喜欢使用具有主机名的变量:

<script type="text/javascript" src="http://<?php echo $_SERVER['HTTP_HOST']; ?>/file/extension/to/javascript/file.js"></script>