0

我正在使用 rewrite_mod 来重写 Web 服务请求。如果请求的 QUERY_STRING 包含某个参数,则 URL 会获取一些附加参数。这是我的重写条件。我还使用了定义键值对的 RewriteMap。当 RewriteCond 匹配时,键的值将被添加到重写的 URL。

一切正常,但现在我想在 RewriteRule 的替换中添加一个默认值,以防 RewriteMap 在 RewriteMap 文件中找不到键。RewriteRule 中的语法看起来像${ MapName : LookupKey | DefaultValue }. 当找不到查找键时,将使用默认值。

我真正想要的是,当找不到密钥时,将使用原始请求 URL,并且不会进行替换。

我的第一个方法是使用${MapName:$1|http://%{HTTP_HOST}%{REQUEST_URI}?{QUERY_STRING}}${MapName:$1|http://%{HTTP_HOST}%{REQUEST_URI}}但没有一个有效。我不知道在|.

4

1 回答 1

1

我刚刚找到了解决我的问题的方法。有必要定义一个 RewriteCond 来检查 RewriteMap 文件中是否存在正确的键。如果它不在映射文件中,则将使用 RewriteRule 并使用原始请求 URL。

RewriteCond 看起来像RewriteCond ${MapName:$1|NOT_FOUND} !NOT_FOUND.

于 2017-02-17T10:23:44.440 回答