我很难建立这样一个简单的规则。只有当 1 类变量不在 4000 和 5999 之间时,我才想清理 URL。
当用户访问时,f?p=3999:1:1:::::
我希望将用户定向到/3999/1?vars=:1:::::
. 如果用户转到f?p=4000:1:1:::::
URL 将不会被清除。
这是我到目前为止所拥有的。除了范围之外,这可以满足我的要求。有人请帮忙!:
<rule match-type="regex">
<note>
FROM= URL typed in by user
TO= URL user is redirected to.
</note>
<from>^/f\?p=([0-9A-Za-z]+):([0-9A-Za-z]+):([0-9A-Za-z]*)(.*)$</from>
<to type="redirect">/$1/$2?vars=$3$4</to>
</rule>
使用 Lindrian 提供的解决方案,我能够将其插入到我的代码中以获得所需的结果。
最终的解决方案:
<rule match-type="regex">
<note>
FROM= URL typed in by user
TO= URL user is redirected to.
</note>
<from>^/f\?p=((?:[0-3]|[6-9])[0-9]*|[54]\d{4,}):([0-9A-Za-z]+):([0-9A-Za-z]*)(.*)$</from>
<to type="redirect">/$1/$2?vars=$3$4</to>
我在这里做的是使用 URLRewriteFilter 来清理 oracle 应用程序快速 URL。这里的问题是 APEX 正在使用相对引用,因此如果您登录到 APEX,链接页面现在将查找 $1/f?p... 作为链接页面。这个错误是因为 $1 不存在!所以,我为开发 UI 关闭了 URL 清理