我想将参数'A1B2C3'传递给基于Google App Engine的GWT应用程序。我这样做就像www.example.com/index.html?key=A1B2C3。虽然它有效,但我想使用漂亮的URL。是否可以在Google App Engine上进行URL重写?我怎么也找不到。
www.example.com/A1B2C3
而不是
www.example.com/index.html?key=A1B2C3
我正在使用Google App Engine和GWT。全部是Java。
答案 0 :(得分:7)
这是一个很酷的问题。我也想出了如何为python做这件事。
的app.yaml:
- url: /test/(.*)
script: test.py \1
test.py:
#!/usr/bin/env python
import sys
def main():
for arg in sys.argv:
print arg
if __name__ == '__main__':
main()
答案 1 :(得分:6)
您需要配置应用程序(请参阅here)。换句话说,你需要“连接”你想要的模式。
从手册中,举例:
<servlet-mapping>
<servlet-name>redteam</servlet-name>
<url-pattern>/red/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>blueteam</servlet-name>
<url-pattern>/blue/*</url-pattern>
</servlet-mapping>
答案 2 :(得分:3)
尝试UrlRewriteFilter:http://tuckey.org/urlrewrite/(或github repo)它是一个简单的'Java EE过滤器,所以它应该可以工作。
答案 3 :(得分:1)
节省一些时间并使用Restlet。你可以做到这一点,我已经在两个不同的项目中做到了这一点。这很直截了当。如果您需要帮助,请告诉我。
答案 4 :(得分:1)
我可能会使用PrettyFaces http://ocpsoft.com/prettyfaces/,它允许您直接在现有应用程序之上进行URL映射。
您只需在pretty-config.xml文件中配置类似的内容:
<url-mapping>
<pattern value="/my/pretty/url" />
<view-id value="/my/existing/url" />
</url-mapping>
或者如果您想重写参数,可以这样做:
<url-mapping>
<pattern value="/my/pretty/url/#{param}" />
<view-id value="/my/existing/url" />
</url-mapping>
这意味着任何网址(入站)现在变为:
/my/pretty/url/value -> /my/existing/url?param=value
在HTML网页和重定向中,您的网址将如下所示:
/my/existing/url?param=value -> /my/pretty/url/value
因此,您可以轻松添加到当前的应用中。
答案 5 :(得分:0)
这是另一个我认为可能对你有帮助的项目:
它被称为restful-gwt ...它也很漂亮: http://code.google.com/p/restful-gwt/
祝你好运!答案 6 :(得分:0)
这是我到目前为止发现的用于实现URL重写GAE Python的best approach