0

そこで、rel=canonical で使用するために、ドキュメントの先頭にあるページの URL をレンダリングしようとしています。これは、Velocity テンプレートを実行しているサイトにあります。私が話しているコンテンツのタイプは、具体的にはクイズです。これには、ユーザーが正解した回答の数を反映するさまざまな URL パラメーターは言うまでもなく、質問ごとに 1 つずつ複数のページがあります。

このサイトには、クイズの URL を生成するためのリダイレクト ルールが用意されています。それらは次のようになります。

<rule>
<from>^/([a-zA-Z_0-9\-]*)/(quiz_[a-zA-Z_0-9\-]*)/(\d*).htm$</from>
<to>/contentdata/quiz.htm?path=/$1/$2.xml&amp;qnum=$3</to>
</rule>

これはすべて、この Velocity コードを使用していることを説明するためのものです。

<link rel="canonical" href="$link.self" />

このページのテンプレート:

http://example.com/fun/quiz_best_quiz_ever/1.htm

次の HTML が生成されます。

<link rel="canonical" href="/contentdata/quiz.htm" />

しかし、私が欲しいのはこのHTMLです:

<link rel="canonical" href="http://example.com/fun/quiz_best_quiz_ever/" />

それは十分に明確ですか?これが複雑であることはわかっていますが、どうすればそれを達成できるかについて誰か考えがありますか?

4

1 に答える 1

0

Velocity テンプレートは、残りの URL が何であるかを知る必要があります。Velocity をレンダリングする方法を説明していません。春ですか?速度サーブレット? 他のシステム?

基本的な考え方は、$baseUrl という別の参照が必要だということです。Velocity テンプレートがマージされる前に、Java コードでこれを設定します。

(Javaで)

context.put("baseUrl", "http://example.com/fun/quiz_best_quiz_ever");

(速度で)

<link rel="canonical" href="$baseUrl/$link.self" />
于 2013-03-16T21:09:05.390 に答える