Apache 当重写规则不';与“重写映射”键不匹配?
我正在使用rewrite_mod重写web服务请求。如果请求的查询字符串包含某个参数,则URL将获取一些附加参数。这是我的重写条件。我还使用定义键值对的重写映射。当RewriteCond匹配时,密钥的值将添加到重写的URL中 这一切都很好,但现在我想在重写规则的替换中添加一个默认值,以防重写映射在重写映射文件中找不到键。重写规则中的语法类似于Apache 当重写规则不';与“重写映射”键不匹配?,apache,mod-rewrite,service,request,rewritemap,Apache,Mod Rewrite,Service,Request,Rewritemap,我正在使用rewrite_mod重写web服务请求。如果请求的查询字符串包含某个参数,则URL将获取一些附加参数。这是我的重写条件。我还使用定义键值对的重写映射。当RewriteCond匹配时,密钥的值将添加到重写的URL中 这一切都很好,但现在我想在重写规则的替换中添加一个默认值,以防重写映射在重写映射文件中找不到键。重写规则中的语法类似于${MapName:LookupKey | DefaultValue}。当找不到查找键时,将使用DefaultValue 我真正想要的是,当找不到密钥时,将
${MapName:LookupKey | DefaultValue}
。当找不到查找键时,将使用DefaultValue
我真正想要的是,当找不到密钥时,将使用原始请求URL,并且不会进行替换
我的第一种方法是使用
${MapName:$1 | http://%{http_HOST}%{REQUEST_URI}?{QUERY_STRING}}
或${MapName:$1 | http://%{http_HOST}%{REQUEST_URI}
,但都不起作用。我不知道在|
之后应该将什么作为默认值 我刚刚找到了解决问题的办法。有必要定义一个RewriteCond来检查RewriteMap文件中是否有正确的密钥。如果它不在映射文件中,则重写规则将是scipt,并将使用原始请求URL
RewriteCond看起来像RewriteCond${MapName:$1 |未找到}!未找到