gpt4 book ai didi

java - Google App Engine (Java) 上的 Catch-all URL 重写

转载 作者:行者123 更新时间:2023-11-30 09:27:36 25 4
gpt4 key购买 nike

我正在尝试为 GAE 应用程序创建一个短 URL,所以我使用了 UrlRewriteFilter ,但我无法正确设置它。基本上,用户会得到这个:

  • test.com/012a-bc

他们应该被重定向到的页面是

  • test.com/vote.jsp?id=012a-bc

目前它正在处理 urlrewrite.xml 文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite>

<rule>
<from>/([0-z]+)</from>
<to last="true">/vote.jsp?id=$1</to>
</rule>

</urlrewrite>

问题是现在所有的 URL 都重定向到这个,例如

  • test.com/thankyou.jsp?id=0123

仍然在 vote.jsp 上运行页面。我应该怎么做才能让它仅在找不到 URL 时重定向?

最佳答案

下面的规则呢:

<rule>
<from>^/([\w-]+)$</from>
<to last="true">/vote.jsp?id=$1</to>
</rule>

其中 [\w-]+ 至少是一个任意单词字符(字母、数字、下划线),包括 -(破折号字符)。您使用 ^$ 来锚定选中文本的开头和结尾。


UrlRewriteFilter文档说

When executing a rule the filter will (very simplified) loop over all rules and for each do something like this psuedo code:

Pattern.compile(<from> element); pattern.matcher(request url);
matcher.replaceAll(<to> element);
if ( <condition> elements match && matcher.find() ) {
handle <set> elements (if any)
execute <run> elements (if any)
perform <to> element (if any)
}

这就是为什么你必须使用开始 (^) 和结束 ($) 字符串正则表达式 anchor

关于java - Google App Engine (Java) 上的 Catch-all URL 重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14523117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com