我正在使用tuckey rewrite filter制定一些规则来映射网址,例如得到以下内容:
<urlrewrite>
<rule>
<from>^/intro</from>
<to>w?page=intro</to>
</rule>
<rule>
<from>^/([a-z0-9]+)/([a-z0-9-]+)$</from>
<to>/w?category=$1&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。没有办法在域名后立即捕获所有网址?例如,在/
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>
抓住一切,但似乎都不起作用。
答案 0 :(得分:0)
如果要匹配规则中不存在的所有内容,可以在末尾添加规则以捕获任何其他规则未匹配的内容。您需要排除您指向的页面,否则您将进入无限重定向循环
<rule>
<from>^/(?!mypage)(.*)$</from>
<to last="true">/mypage?myparam=$1</to>
</rule>
我认为这也回答了问题2?
热门提示 - 您可以使用此URL
查看规则的实时状态(仅限localhost)http://127.0.0.1:8080/rewrite-status