1

Joomla や Drupal の代わりに、SilverStripe を CMS (http://www.silverstripe.com/services/why-choose-us/open-source-cms/) として使用していますが、ほとんどの部分で素晴らしい経験になっています。これまでのところ。ただし、この問題は非常に奇妙で、SilverStripe が関係しているのかどうかもわかりません。基本的に、テンプレートに設定されている CSS ファイルへのリンクは、マークアップがブラウザーに出力されるときに先頭のスラッシュが失われます。明らかに、これは非常に問題になる可能性があります。

これは、関連するテンプレートの head セクションです。

<!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>

リンクは実際にはテンプレートに動的に生成されますが、問題を切り分けるためにこの 1 つのリンクを自分で配置しました。手動でテンプレートに追加した場合でも、リンク マークアップは href="framework/admin/thirdparty/jquery-notice/jquery.notice.css?m=1342411326" (元のリンクから先頭のスラッシュを除いたもの) になります。誰もがこれがどのように起こるか考えていますか? Chrome、Safari、Firefox のいずれを使用していても、すべて同じように動作します。

ドキュメント全体を壊すことで問題を「修正」できることに気付きました。の前に文字を追加する<!DOCTYPE html>と、css リンクの href は先頭のスラッシュで再びルートを指しています。これは、Doctype、base タグ、または 2 つの奇妙な組み合わせによるものですか?

私が遭遇した奇妙な問題の1つ...

4

3 に答える 3

2

デフォルトでは、SilverStripe は意図的に先頭のスラッシュを省略し、base タグを使用してリンクが正しい場所を指していることを確認します。これが行われた理由は、サイトがサブ URL で実行されている場合でも機能するサイトを簡単に構築できるようにするためでした。たとえば、開発サイトはhttp://localhost/mysite/.

これが、base タグを取り除けばハンドバスケットですべてが地獄に行く理由です。

ただし、URL の先頭のスラッシュを削除するべきではありません。これを行う可能性が最も高いのはContentNegotiatorクラスであり、doctype をいじると、別の動作につながる可能性があります。

以前はデフォルトでオンでしたが、2.4 および 3.0 ではデフォルトでオフになっているはずです。使用している SilverStripe のバージョンは何ですか?

于 2012-10-14T22:41:31.097 に答える
0

baseタグを試しましたか?

これが機能しない場合は、リンク全体を配置してみてください。http://website.com/framework...

于 2012-08-01T07:58:53.767 に答える
0

/リンクが生成された場所にエクストラを追加してみてください。

于 2012-08-01T07:12:35.370 に答える