0

我很难建立这样一个简单的规则。只有当 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 清理

4

1 回答 1

0

我无法帮助您处理 mod-rewrite 代码,但我可以帮助您处理正则表达式。即使正则表达式不是做这种事情的最佳工具,它也可以做到。

我创建了一个简短的简单正则表达式,它匹配除 to 范围内的所有数字40005999http: //regex101.com/r/aU5qC4

我希望您可以使用其他代码来完成这项工作。

祝你好运。

于 2012-08-20T07:04:56.780 回答