参考Velocity模板中的重定向URL

时间:2013-03-13 16:15:04

标签: velocity

所以我试图在文档的头部呈现页面的URL,以便与rel = canonical一起使用。这是在运行Velocity模板的站点上。我正在谈论的内容类型特别是一个测验 - 它有多个页面,每个问题一个,更不用说反映用户已经纠正了多少答案的不同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/" />

这是否足够清楚?我知道这很复杂,但有没有人知道我怎么能够完成它?

1 个答案:

答案 0 :(得分:0)

您的Velocity模板需要知道URL的其余部分。你没有解释你是如何渲染Velocity的。春天来了吗? Velocity Servlet?其他一些系统?

基本思想是你需要另一个名为$ baseUrl的引用。在合并Velocity模板之前在java代码中设置它

(在Java中)

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

(在Velocity中)

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