tomcat 的 URL 重写

发布于 2024-12-04 06:09:22 字数 770 浏览 1 评论 0原文

我们已经通过 tomcat rewrite.xml 文件定义了 java 应用程序的 url 规则。

<rule>
    <condition name="host" operator="equal">example-laboratories.pt</condition>
    <from>[^pt]/(.*)$</from>
    <to type="redirect">http://example-laboratories.pt/pt/$1</to>
</rule>

当我们请求 URL http://example-laboratories.pt url 时,此方法有效,但我需要重定向到 < a href="http://example-laboratories.pt/pt" rel="nofollow">http://example-laboratories.pt/pt 如果用户请求 http://example-laboratories.pt/pt。现在上述规则重定向到 http://example-laboratories.pt/pt/pt (注意末尾附加的“pt”)。

We have already defined url rule for java application via tomcat rewrite.xml file.

<rule>
    <condition name="host" operator="equal">example-laboratories.pt</condition>
    <from>[^pt]/(.*)
lt;/from>
    <to type="redirect">http://example-laboratories.pt/pt/$1</to>
</rule>

This works when we request the URL http://example-laboratories.pt url, but I need to redirect to http://example-laboratories.pt/pt if the user requests http://example-laboratories.pt/pt. Now the above rule redirects to http://example-laboratories.pt/pt/pt (notice the additional 'pt' on the end).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

要走就滚别墨迹 2024-12-11 06:09:22

我不太确定你想要做什么,但看起来你的正则表达式中有一个错误:

<from>[^pt]/(.*)
lt;/from>

这实际上是说“除‘p’或‘t’之外的任何字符,后跟斜杠,然后是零个或多个任何事物。”

我不确定这就是你想要的,但这似乎不是你想要做的。如果您使用不同的 URL 重写工具,则在大多数情况下可以避免使用正则表达式。 (看起来您正在使用 Tuckey?)

您可以使用 OCPsoft Rewrite 来完成此操作(http://ocpsoft.com/rewrite/

例如:

ConfigurationBuilder.begin()
.defineRule()
.when(Domain.matches("example-laboratories.pt")
    .and(Path.matches("/{1}/{2}")
        .where("1").matches("(?!pt)[^/]+")
        .where("2").matches(".*")))
.perform(Redirect.permanent(context.getContextPath() + "/pt/{2}"))

I'm not exactly sure what you want to do, but it looks like you have an error in your regular expression:

<from>[^pt]/(.*)
lt;/from>

This actually says "any character except 'p' or 't', followed by a slash, then zero or more of anything."

I'm not sure that's what you want, but it doesn't seem like what you want to be doing. You can avoid Regular expressions for the most part if you use a different URL-rewriting tool. (It looks like you are using Tuckey?)

You can do this using OCPsoft Rewrite (http://ocpsoft.com/rewrite/)

For example:

ConfigurationBuilder.begin()
.defineRule()
.when(Domain.matches("example-laboratories.pt")
    .and(Path.matches("/{1}/{2}")
        .where("1").matches("(?!pt)[^/]+")
        .where("2").matches(".*")))
.perform(Redirect.permanent(context.getContextPath() + "/pt/{2}"))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文