2017-02-16 54 views
0

我正在使用rewrite_mod來重寫Web服務請求。如果請求的QUERY_STRING包含某個參數,則該URL將獲得一些其他參數。這是我的重寫條件。我還使用定義鍵值對的RewriteMap。當RewriteCond匹配時,密鑰的值將被添加到重寫的URL中。如何在RewriteRule與RewriteMap鍵不匹配時將原始請求URL作爲默認值?

這一切都正常,但現在我想添加一個默認值到RewriteRule的替代,以防RewriteMap在RewriteMap文件中找不到鍵。 RewriteRule中的語法看起來像${ MapName : LookupKey | DefaultValue }。當找不到查找鍵時,將使用DefaultValue。

我真正想要的是,當沒有找到密鑰時,將使用原始請求URL並且不會進行替換。

我的第一種方法是使用${MapName:$1|http://%{HTTP_HOST}%{REQUEST_URI}?{QUERY_STRING}}${MapName:$1|http://%{HTTP_HOST}%{REQUEST_URI}}但它們都不起作用。我不知道在|之後要把DefaultValue放在什麼位置。

回答

0

我剛剛爲我的問題找到了解決方案。有必要定義一個RewriteCond來檢查RewriteMap文件中是否有正確的密鑰。如果它不在地圖文件中,則RewriteRule將被scipt並將使用原始請求URL。

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

相關問題