0

我有一个不错的 restlet 应用程序,其组件附加以下内容:

      cmp.getDefaultHost().attach("/mycmd",ProcessReq.class);

当请求 URL 为 http://<my-host>/mycmd/ 时,ProcessReq 类返回一个 index.html,其中包含指向其他页面的链接。这些页面与 index.html 位于同一目录中,并在我的 index.html 中作为相对页面引用,如下例所示:

<a href="otherpage.html">Other Page</a>

但是,我发现用户倾向于使用不带尾随“/”的 URL,例如: http://<my-host>/mycmd 。不幸的是,当他们这样做时,所有指向相关页面的链接都会搞砸。

当您使用 http://<my-host>/mycmd/ 显示 index.html,然后单击“其他页面”链接时,浏览器(正确)转到 http://<my-host>/mycmd/其他主机.html。不幸的是,当您执行 http://<my-host>/mycmd(没有尾部斜杠)时,指向其他页面的链接会将浏览器发送到 http://<my-host>/otherpage.html,这当然会返回404 错误。

我在 Internet 上进行了搜索,发现 Restlet 库被设计为在我默认执行的各种 URL 之后需要一个斜杠。但是,要求这样做会使我的用户发疯。

是否有某种方法可以配置或操作请求(或响应),以便我可以发送此类 URL 请求而无需尾部斜杠,并使返回页面中的相对链接指向正确的位置?

有人请指教...

4

1 回答 1

1

我推荐的解决方案是,如果用户忘记键入,则使用斜杠自动将客户端浏览器重定向到 URI。因此,您的相对 URI 将保持简单。

否则,您需要将目录名称再次添加到每个相对 URI,例如“mycmd/otherhost.html”

于 2013-02-11T08:47:34.717 回答