所有
我的问题是关于我在尝试为我的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变量以保存文档根目录,然后连接相应的目录路径以访问文件。
有什么建议吗?当我将目录结构上传到我的在线服务器而不是我当前的本地主机时,这将如何改变?
答案 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>