所以我决定“更新”我用JSP编写的网站,以显示静态网址而不是公共动态网址。
到目前为止,我编写了一个servlet来将静态URL重定向到相应的动态URL。数据存储在数据库表中。
这是代码:
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
StringBuilder redirectTo = new StringBuilder();
redirectTo.append(getBaseURL());
redirectTo.append(getBaseURI());
redirectTo.append("/index.jsp");
String url = request.getRequestURI();
if (url.contains(".jsp")) return;
try {
KeyPageId_Lang k = SiteMap.getRedirectFromCanonicalURL(url);
if (k!=null) {
redirectTo.append("?id=" + k.getkPageId());
redirectTo.append("&lang=" + k.getkLanguage());
}
else {
log.error("CanonucalURLRedirect: No translation found for " + url);
}
}
catch (Exception e) {
log.error("CanonucalURLRedirect ERROR: " + e.getMessage());
}
response.sendRedirect(redirectTo.toString());
因此,如果我输入:http://localhost/jsp/en/home,它会成功重定向到http://localhost/jsp/index.jsp?id=1&lang=en
如果找不到静态URL,它将重定向到默认的/index.jsp
另外,在index.jsp上,我有以下一行:
<link rel="canonical" href="<%=canonicalURL%>" />
让搜索引擎为友好的静态网址编制索引。
现在,我一直在搜索很多东西,我仍然无法用浏览器导航栏上的静态URL替换动态URL来显示localhost / jsp / en / home而不是localhost / index。 JSP ID = 1&安培;朗= EN
有什么想法吗?
谢谢!