【问题标题】:XPages - Using Ampersand in URL query stringXPages - 在 URL 查询字符串中使用与号
【发布时间】:2012-10-25 19:39:31
【问题描述】:

我有一个 XPage,它以 URL 参数的形式将信息传递给另一个 XPage(由于 SEO,这很重要)。我可以使用:java.net.URLEncoder.encode 对 URL 进行编码,然后我可以在我的参数值中使用与号,并且我可以只使用 param.get() 来获取值而不解码它们。这很好用,但是当我将它与服务器端替换结合使用时,它不能按预期工作,它会将 & 符号恢复为正常的 & 符号而不是 %26。任何想法都会在这里受到赞赏?由于 SEO,服务器端替换也很重要。

更新:

这是地址栏中显示的提交前的 URL(如果我们假设我的类别是水果和蔬菜):

/product-byCategory/Fruit+%26+Vegetables

服务器端替换规则是:

- /product-byCategory/*
- /mywebsite.nsf/xspProductByCat.xsp?cat=*

查询字符串值为:

cat=Fruit+&+Vegetables

有趣的是,如果我在地址栏中输入这个 URL,我会得到正确的查询字符串:

http://www.mywebsite.com/mywebsite.nsf/xspProductByCat.xsp?cat=Fruit+%26+Vegetables

【问题讨论】:

  • 您可以在加载时在 xpage 中进行重定向,而不是使用替换。
  • 感谢 Thomas - 但我不确定搜索引擎是否会对此感到高兴。
  • 您有替换前后的 URL 示例吗?
  • Tommy,我已经用这些信息更新了问题 - 谢谢。

标签: cgi query-string xpages xpages-ssjs


【解决方案1】:

我遇到了同样的问题,但我搜索(并找到了)不同的解决方案。我不需要替换,我不使用 QueryString,Google 显然不介意。

我使用这种类型的网址:

http://www.mywebsite.com/mywebsite.nsf/xspProductByCat.xsp/Fruit+%26+Vegetable

我通过

获取扩展信息,而不是 QueryString
    var name= facesContext.getExternalContext().getRequestPathInfo();

以这种方式创建的网站页面已被 Google 和 Bing 正确编入索引。我们对页面排名并不完全满意,但这是一个不同的话题。

这是websiteextended URL 的示例

【讨论】:

  • 非常感谢 D.Bugger - 这是一个非常有趣的解决方案。暂时针对这一特定问题,我们将 URL 中的“水果和蔬菜”转换为“水果和蔬菜”,然后当它显示时,我使用 @Replacesubstring 将 and 替换为 &,客户目前对该解决方案感到满意.
  • 我真的很喜欢您的解决方案,但客户希望 URL 看起来自然而不是注释数据库路径。刚试过&这也不起作用。我对这个解决方案感到满意,我在 UI 中将“和”替换为“&”(我查找包含空格的“和”,以确保不替换部分单词)。
  • 我可能会尝试将您的解决方案与服务器端替换相结合 - 如果我们按照您的建议使用“/”作为分隔符,我认为这些值可以是任何值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-06
  • 2011-01-28
  • 2017-06-13
  • 2017-07-22
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
相关资源
最近更新 更多