所以我试图在文档的头部呈现页面的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&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/" />
这是否足够清楚?我知道这很复杂,但有没有人知道我怎么能够完成它?
答案 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" />