![](/img/trans.png)
[英]correct Apache RewriteCond and RewriteRule when using RewriteMap?
[英]How to get the original request URL as a default value when a RewriteRule don't match the RewriteMap key?
我正在使用rewrite_mod重寫Web服務請求。 如果請求的QUERY_STRING包含某個參數,則URL獲得一些其他參數。 這是我的重寫條件。 我還使用了RewriteMap,它定義了一個鍵值對。 當RewriteCond匹配時,鍵的值將被添加到重寫的URL中。
一切正常,但現在我想在RewriteRule的替換項中添加默認值,以防RewriteMap在RewriteMap文件中找不到密鑰。 RewriteRule中的語法類似於${ MapName : LookupKey | DefaultValue }
${ MapName : LookupKey | DefaultValue }
。 當找不到查找鍵時,將使用DefaultValue代替。
我真正想要的是,當找不到密鑰時,將使用原始請求URL,並且不會進行替換。
我的第一種方法是使用${MapName:$1|http://%{HTTP_HOST}%{REQUEST_URI}?{QUERY_STRING}}
或${MapName:$1|http://%{HTTP_HOST}%{REQUEST_URI}}
沒有一個有效。 我不知道在|
之后放置什么作為DefaultValue |
。
我剛剛找到了解決我問題的方法。 有必要定義一個RewriteCond來檢查RewriteMap文件中是否有正確的密鑰。 如果它不在映射文件中,則將重寫RewriteRule並將使用原始請求URL。
RewriteCond看起來像RewriteCond ${MapName:$1|NOT_FOUND} !NOT_FOUND
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.