wampserver - localhost上的链接已断开

时间:2018-03-19 18:46:13

标签: javascript php css content-management-system wamp

我目前正在使用wampserver开发一个非常简单的cms,并且我计划在完成后将其上传到我的reserverd服务器。 有一天,当我通过远程服务器调试我的代码时,我的页面加载时没有任何样式或图像。我恢复并简单地删除了一些'/'并且工作得很好。 例如,我更改了这样的网址: 在改变之前:

<link rel="stylesheet" href="/css/styles.css"/>
更改后

<link rel="stylesheet" href="css/styles.css"/>

当我将这些新网址应用到我的本地项目时,我再次遇到没有样式或图像或js或其他任何内容的页面......我该怎么办?

1 个答案:

答案 0 :(得分:0)

删除/后,您将其更改为相对路径。

所以你现在必须考虑你的路径结构。

例如,如果项目位于文件夹中,那么根目录为:http://localhost/mycms/然后您转到./mycms/cats,CSS的相对路径将转换为:./mycms/cats/css/styles.css这会打破它。

您应该考虑使用资产的绝对路径。例如:

<link rel="stylesheet" href="//localhost/mycms/css/styles.css"/>

这可以通过定义或检测$_SERVER个变量的当前网址路径并预先设置主机名来实现。

所以存储在一个常量中的东西,你可以在整个代码中使用它,这将导致到webroot的正确绝对路径:

<?php
define('SITE_URL', rtrim(sprintf(
    '%s://%s/%s',
    isset($_SERVER['HTTPS']) || $_SERVER["SERVER_PORT"] == "443"  ? 'https' : 'http',
    $_SERVER['HTTP_HOST'],
    trim(dirname($_SERVER['SCRIPT_NAME']), '/')
), '/'));

echo SITE_URL;

然后在模板中回复它。

<link rel="stylesheet" href="<?= SITE_URL ?>/css/styles.css"/>