【问题标题】:wampserver -- Links are broken on localhost [duplicate]wampserver-本地主机上的链接已损坏[重复]
【发布时间】:2018-08-28 10:42:18
【问题描述】:

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

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

改动后:

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

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

【问题讨论】:

  • 您是否在 html 中设置了base url
  • 您是访问一个实际的 URL IE localhost:8080 还是直接访问它 IE C:\My\Directory\To\Website\index.html
  • @AliSheikhpour nope.
  • @Zak 当然我不是从一开始就写整个网址。就像之前提到的那样。
  • 我的意思不是你在&lt;link&gt; 标签中放了什么......我的意思是......你如何在浏览器中访问你的主页?

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


【解决方案1】:

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

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

例如,如果项目被放置在一个文件夹中,那么根目录是:http://localhost/mycms/,那么您转到./mycms/cats,您的 CSS 的相对路径将被转换为:./mycms/cats/css/styles.css,这会破坏它。

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

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

这可以通过定义或检测来自 $_SERVER 变量的当前 URL 路径并添加您的主机名来实现。

因此,类似于 which 存储在一个常量中,然后您可以在整个代码中使用它,这将导致到 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"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-11
    • 2014-04-29
    • 2017-04-06
    • 2013-01-27
    • 2022-09-18
    • 2018-08-17
    • 2012-02-26
    • 1970-01-01
    相关资源
    最近更新 更多