Xpages 在服务器上添加重定向规则后读取传入url

Xpages 在服务器上添加重定向规则后读取传入url,xpages,lotus-domino,Xpages,Lotus Domino,我在domino服务器上添加了如下重定向规则: Incoming URL pattern: /xxx/* Replacement pattern: /myDb.nsf/myXpage.xsp 如何从xpage读取浏览器中的传入url 如果我打开此url: "http://myDomain/xxx/test" 然后我被重定向到我的xpage,如果我执行context.getUrl()操作,我会得到 但是有没有读取传入url的选项 "http://myDomain/xxx/test" 将重定向

我在domino服务器上添加了如下重定向规则:

Incoming URL pattern: /xxx/*
Replacement pattern: /myDb.nsf/myXpage.xsp
如何从xpage读取浏览器中的传入url

如果我打开此url:

"http://myDomain/xxx/test"
然后我被重定向到我的xpage,如果我执行context.getUrl()操作,我会得到

但是有没有读取传入url的选项

"http://myDomain/xxx/test"

将重定向规则更改为包含*:

Incoming URL pattern: /xxx/*
Replacement pattern: /myDb.nsf/myXpage.xsp?id=*

这样,您可以使用
param.get(“id”)
读取XPage中URL的*部分,然后使用该变量查找并打开相关文档。

浏览器仍然可以获取原始URL,因此您可以将以下内容放入客户端JS事件中,OnClient Load是否使用正确的url参数将用户重定向到XPage以正确提供url参数

mystring = window.location.href;
var rightback = mystring.substring(mystring.lastIndexOf("/")+1,mystring.length);
window.location.href = "/test.nsf/testurl1.xsp?openxpage&id=" + rightback;

Ý您可以将替换模式更改为

/myDb.nsf/myXpage.xsp/xxx/*
这允许您使用访问.xsp和查询参数之间的部分

facesContext.getExternalContext().getRequestPathInfo()
F.e

我会给你

"/xxx/test"

我认为您看不到原始URL,因为请求可能在XPages接管之前被重定向。为什么要查看原始URL以及您试图实现的目标?我想使用干净的URL,如果对/xxx/*的每个请求都转到我的xpage,那么基于输入URL的xpage将决定打开哪个文档。您的xpage将使用什么来决定打开哪个文档?在/xxx/(例如/xxx/test)之后的部分会打开“test”文档吗?是的,然后它会打开测试文档确定,然后您需要将/xxx/*传输到您的XPageYes,我已经尝试过了,但是无法在url中使用参数。示例:。Domino似乎忽略了“?”之后的所有内容。我也尝试过替代规则。传入Url:/xxx/*?*,替换模式:/myDb.nsf/myXpage.xsp?id=*&*但domino再次忽略字符“?”。这很奇怪,因为它在使用“!”时工作,但我不喜欢在url中使用“!”作为参数。这是Domino中的一个bug吗?一个没有Domino的xpages knowledged家伙的建议:如果实际上您正在尝试的是HTTP重定向,那么看看您是否有url重写能力将所有请求定向到服务器脚本(xsp?)。在重写规则中,甚至可以将路径、参数设置为新参数(如/index.xsp?q=originalpath/./&originalparam1&originalparam2)。现在在脚本(可能是index.xsp?)中,以您想要的方式形成原始url,对原始url进行编码,将其作为参数添加到目标url,并进行HTTP重定向。确保最终URL不会太长(一些代理等会施加限制)。domino服务器有自己的简单GUI,用于添加http规则。但我知道domino有一种更高级的方法,使用C语言编写的DSAPI来操作http服务器,但我不希望使用这种方法。这不是我想要的健壮的解决方案。如果用户输入地址,服务器需要生成一个带有javascript的虚拟页面,该页面返回到服务器,url作为参数?我没有说它是健壮的!您需要创建两个xpage。第一个将有我上面的代码重定向到第二个XPage,它将使用参数显示您的内容。好的,这是一个创造性的解决方案,但它有太多的缺点。谷歌不会索引页面,你可以点击浏览器中的历史回顾按钮。如果url包含#哇,我希望这会重定向到一个断开的链接,但代码将无法正常工作,但它像一个符咒一样工作:)很抱歉没有足够的“声誉”来投票支持你,但希望所有其他人都能这样做。完美、简单和健壮的解决方案,也可以在url中使用“?”。
"http://myDomain/xxx/test"
"/xxx/test"