基础href导致这个?

时间:2012-10-02 02:50:40

标签: html apache .htaccess

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

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

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

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

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

并没有工作,因为它是去localhost的根,而不是网站文件夹。

然而,将链接更改为此(没有正斜杠)可以很好地工作。

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

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

2 个答案:

答案 0 :(得分:2)

以斜杠(/)开头的资源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" />
无论基本href值如何,

style sheet 1都会尝试从http://mysite.com/css/style.css获取它,因为其网址以/开头,表示主文档根目录。

style sheet 2但是会​​使用基本href值并尝试从http://mysite.com/res/css/style.css

获取它

可能的解决方案

  1. 更新您的HTML / PHP / JSP等,从所有样式表网址,链接,图片等中删除/前缀。您应该可以使用像这样的好编辑器来查找和替换它Notepad ++

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

答案 1 :(得分:0)

/开头的网址(绝对路径引用)仅在文档位于HTTP服务器上或者其基本URL设置(通过base标记)引用时才有用绝对HTTP URL。如果您尝试在本地HTML文档中使用它们(没有base标记),则使用的基本网址将是file://网址,因此/foo/bar之类的网址会被解释为{{ 1}},通常不起作用 - 您需要一个file://foo/bar构成计算机文件系统中资源的完整路径名。

因此,应该可供本地使用的网站不得使用以foo/bar开头的网址。