2017-02-16 3 views
0

Я использую rewrite_mod для перезаписи запросов веб-сервисов. Если QUERY_STRING запроса содержит определенный параметр, тогда URL-адрес получит некоторые дополнительные параметры. Это мое условие перезаписи. Я также использую RewriteMap, который определяет пару ключ-значение. Когда RewriteCond будет соответствовать, значение ключа будет добавлено к переписанному URL.Как получить исходный URL-адрес запроса в качестве значения по умолчанию, если RewriteRule не соответствует ключу RewriteMap?

Что все работает нормально, но теперь я хочу добавить значение по умолчанию в подменю RewriteRule, если RewriteMap не сможет найти ключ в файле RewriteMap. Синтаксис в RewriteRule выглядит как ${ MapName : LookupKey | DefaultValue }. Когда Look-up-Key не будет найден, вместо этого будет использоваться 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.

Смежные вопросы