当前位置: 代码迷 >> java >> Java URL重写过滤规则
  详细解决方案

Java URL重写过滤规则

热度:66   发布时间:2023-08-04 09:08:40.0

我正在使用来制定一些映射URL的规则,例如获得以下内容:

<urlrewrite>
<rule>
    <from>^/intro</from>
    <to>w?page=intro</to> 
</rule>

<rule>
    <from>^/([a-z0-9]+)/([a-z0-9-]+)$</from>
    <to>/w?category=$1&amp;post=$2</to> 
</rule>
</urlrewrite>

在第二条规则上,我正在匹配java/variables类的东西,一切正常,但是...

1.如何匹配规则中未包含的所有内容,我想将诸如unknown/page/will/not/be/found/introduction类的页面重定向到自定义网址。

对于长网址(超过2个单词,例如java / variables / others),它可以正常工作,但我怀疑它是最好的解决方案,仍然没有找到/introduction

<rule>
    <from>^/([a-z0-9]+)/([a-z0-9-]+)/([a-z0-9-/]+)$</from>
    <to>/w?page=$1+$2+$3</to> 
</rule>

最后一个正则表达式([a-z0-9-/]+)/作为字符串,并将其作为参数发送到servlet。

2.是否有任何方法可以在域后立即捕获所有URL? 例如,在mydomain.com/ /之后,我尝试了下一个,但最终陷入无尽的错误循环:

<rule>
    <from>^/([a-z0-9-/]+)$</from>
    <to>w?page=$1</to> 
</rule>

尝试:

<rule>
    <from>^/([a-z0-9-/]+)$</from>
    <to>/w?page=$1</to> 
</rule>

抓住一切,但似乎都不起作用。

如果要匹配规则中未包含的所有内容,则可以在末尾添加一个规则以捕获任何其他规则未匹配的内容。 您需要排除要定向的页面,否则最终将陷入无限重定向循环

<rule>
    <from>^/(?!mypage)(.*)$</from>
    <to last="true">/mypage?myparam=$1</to>
</rule>

我认为这也回答了问题2?

最重要的提示-您可以使用此URL查看规则的实时状态(仅在localhost上)

http://127.0.0.1:8080/rewrite-status
  相关解决方案