RewriteMap unescape int:unescape
RewriteCond %{QUERY_STRING} ^url=(.+)$
RewriteRule ^/redir$ ${unescape:%1} [R=301,L]
Apache позволяет определять пользовательские сопоставления перезаписи из различных типов внешних источников.Например, если вы хотите переписать /users/<some alias>
в /users/<full name>
, у вас может быть текстовый файл, в котором указаны пары псевдонимов / имен, и правило перезаписи, которое переводит часть «псевдонима» URL-адреса с использованием этого сопоставления.
Отображения могут исходить из нескольких типов источников.Примером псевдонима / имени является стандартный тип обычного текста (txt
).
RewriteMap
также позволяет сопоставить несколько специальных внутренних источников (int
).Они просто передают значение во внутреннюю функцию Apache и возвращают результат.Это:
toupper
: преобразует ключ в верхний регистр. tolower
: преобразует ключ во весь нижний регистр. escape
: Переводит специальные символы в ключе в шестнадцатеричные кодировки. unescape
: переводит шестнадцатеричные кодировки в ключе обратно в специальные символы.
unescape
- это то, что выищите.
Дополнительную информацию можно найти в документации mod_rewrite .