0

所以我试图在文档的头部呈现一个页面的 URL,以便与 rel=canonical 一起使用。这是在一个使用 Velocity 模板的网站上。我所说的内容类型具体是一个测验——它有多个页面,每个问题一个页面,更不用说反映用户正确答案的不同 URL 参数了。

该站点已制定重定向规则以生成测验的 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 的其余部分是什么。你没有解释你是如何渲染速度的。是春天吗?速度 Servlet?其他系统?

基本思想是您需要另一个名为 $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 回答