gpt4 book ai didi

java - 如何在集群 apache tomcat 环境中使用 MOD Rewrite 缩短我的 URL

转载 作者:行者123 更新时间:2023-11-28 21:53:32 26 4
gpt4 key购买 nike

这是我的真实网址

http://www.getinfotowin.com/virtual/PageRouteone?actionName=best_television_Series&service=T&id=50&customerId=81&KeyId=1&IsVisible=N&service=Nothing

预期的短网址

http://www.getinfotowin.com/best_television_Series/T/50/81/1/N/Nothing

我的 MOD_REWRITE 逻辑如下所示

RewriteRule    ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$    

virtual/PageRouteone?actionName=$1&service=$2&id=$3&customerId=$4&KeyId=$5&IsVisible=$6&service=$7 [NC,L] # Process product requests

我们的 apache 使用 AJP 协议(protocol)与 Tomcat 通信。我已经尝试了上面给出的逻辑,但它不起作用。在实际的 URL 中,“virtual”是我的 war 文件名,“PageRouteone”是我的 java servlet 名称。

我想知道我的重写规则是否正确。如果不是,那是什么问题?

最佳答案

您将模式锚定到字符串的开头(URI 路径),但模式的开头与始终作为 URI 路径开头的“/”字符不匹配。这种模式可能会更好:

^/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$

由于您使用 NC 选项进行不区分大小写的匹配,因此您应该能够将其减少为:

^/([a-z0-9-]+)/([a-z0-9-]+)/([a-z0-9-]+)/([a-z0-9-]+)/([a-z0-9-]+)/([a-z0-9-]+)/([a-z0-9-]+)/?$

您甚至可以考虑将其简化为(在这种情况下 NC 将不再相关):

^/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$

这将挑选出每个路径段而不考虑其中的字符,将参数验证留给您的应用程序。

在任何情况下,您可能需要使用 PT(直通)选项让 AJP 声明重写的 URL(但要测试,因为不直通更有效)。

关于java - 如何在集群 apache tomcat 环境中使用 MOD Rewrite 缩短我的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24493230/

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