0

嗨,我有一个 spip 网站,我需要在我的本地机器上工作。

我复制了所有内容,并且该站点似乎正在与所有数据库一起“工作”。

问题是我认为有一个基本的 href 集。

标题中的样式表是这样链接的:

<link rel="stylesheet" type="text/css" href="/css/style.css" />

并且无法正常工作,因为它要转到本地主机的根目录而不是网站文件夹。

但是,将链接更改为这个(没有正斜杠)效果很好。

<link rel="stylesheet" type="text/css" href="css/style.css" />

问题是我在网站上有大量的链接都是这样的。有什么地方我可以看看是什么原因造成的?我在任何地方都找不到基本的 href 设置,并且 htaccess 文件似乎没有效果。

4

2 回答 2

3

以斜杠 ( ) 开头的资源 URL 和链接 href/不使用该<base href="xyz">值。它们告诉浏览器从主机/域路径的根目录中获取资源。

例如,如果您有:

<base href="http://mysite.com/res/">

<!-- style sheet 1 -->
<link rel="stylesheet" type="text/css" href="/css/style.css" />

<!-- style sheet 2 -->
<link rel="stylesheet" type="text/css" href="css/style.css" />

style sheet 1无论基本 href 值如何,都将尝试从中获取它http://mysite.com/css/style.css,因为它的 URL 以/指示主机文档根开头。

style sheet 2但是将使用基本 href 值并尝试从中获取它http://mysite.com/res/css/style.css

可能的解决方案

  1. 更新您的 HTML/PHP/JSP 等以从您的所有样式表 url、链接、图像等中删除 / 前缀。您应该能够使用像记事本 ++这样的好编辑器找到并替换它

  2. 丑陋的方式 - 在页面加载后使用一些 JS 修改这些 URL。这有一个问题,用户可能会在 JS 完成执行之前看到错误/不完整的内容。

于 2012-10-02T02:54:14.270 回答
0

以(绝对路径引用)开头的 URL/仅在文档​​位于 HTTP 服务器上或它的基本 URL 集(通过base标记)以引用绝对 HTTP URL 时才有用。如果您尝试在本地 HTML 文档(不带标签)中使用它们,则使用的基本URLbase将是一个URL file://,因此像计算机文件系统中资源的完整路径名。/foo/barfile://foo/barfoo/bar

因此,应该可以下载以供本地使用的站点根本不能使用以 . 开头的 URL /

于 2012-10-02T05:45:11.973 回答