CSS <link /> href使用SilverStripe丢失前导斜杠

时间:2012-08-01 07:06:50

标签: php css hyperlink doctype silverstripe

我使用SilverStripe作为CMS(http://www.silverstripe.com/services/why-choose-us/open-source-cms/)而不是Joomla或Drupal,这对我来说是一次很棒的体验到目前为止大部分时间。然而,这个问题非常奇怪,我甚至不确定SilverStripe是否与它有任何关系。基本上,当标记输出到浏览器时,指向模板中设置的CSS文件的链接正在丢失其前导斜杠。显然这可能是非常有问题的。

这是相关模板的主题部分:

<!DOCTYPE html>
<html>
<head>
    <% base_tag %>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=720, maximum-scale=1.0" />
    <title>$Title</title>
    <link rel="stylesheet" type="text/css" 
        href="/framework/admin/thirdparty/jquery-notice/jquery.notice.css?m=1342411326" />
</head>

链接实际上是动态地生成到模板中的,但是我将这一个链接放在自己中以隔离问题。即使手动添加到模板中,链接标记也会以href =“framework / admin / thirdparty / jquery-notice / jquery.notice.css?m = 1342411326”结尾,原始链接减去前导斜杠/。有谁知道这会怎么样?无论我是在Chrome,Safari还是Firefox,它们的行为都一样。

我注意到我可以通过打破整个文档来“修复”这个问题。如果我在<!DOCTYPE html>之前添加一个字符,则css链接上的href将再次使用前导斜杠指向根。这是因为doctype,基本标签还是两者的奇怪组合?

我遇到的一个陌生问题......

3 个答案:

答案 0 :(得分:2)

默认情况下,SilverStripe会故意不使用前导斜杠,并使用基本标记确保链接指向正确的位置。这样做的原因是为了使站点在子URL中运行时仍然可以更容易地构建站点,例如,开发站点可能位于http://localhost/mysite/

这就是为什么如果你摆脱了基本标签,一切都在一个手提篮中下地狱的原因 - SilverStripe的构建期望它在那里。

但是,它不应该剥离URL上的前导斜杠。最有可能的是ContentNegotiator类,如果你使用了doctype,那么会导致不同的行为。

它曾经默认打开,但在2.4和3.0中默认情况下应该关闭。您使用的是什么版本的SilverStripe?

答案 1 :(得分:0)

尝试在生成链接的位置添加额外的/

答案 2 :(得分:0)

您是否尝试过base代码?

如果这不起作用,您可以尝试将整个链接放在一起,例如。 http://website.com/framework...

相关问题