簡體   English   中英

當RewriteRule與RewriteMap鍵不匹配時,如何獲取原始請求URL作為默認值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM