modrewrite. помогите обработать URL, содержащий знак $

12
Cheltap
На сайте с 27.11.2008
Offline
30
1475

Приветствую всех!

Часто пишу правила RewriteCond/RewriteRule для преобразования кривых урлов,

помогал не раз здесь новичкам в этом, но вот теперь сам споткнулся почти на ровном месте.

Урл содержит знак `$' (доллар).

Пытаюсь с помощью правила преобразования урлов в .htaccess убрать этот доллар.

Но не получается даже просто поймать такой урл для обработки,

т.е. не получается написать даже строку RewriteCond.

Помогите!

unixadm
На сайте с 24.09.2010
Offline
110
#1

А обычным слешом он не экранируется?

Host4Biz: NVMe Хостинг в Европе ( https://host4.biz/ru/hosting/shared-hosting ) | Windows/Linux NVMe VPS в Европе ( https://host4.biz/ru/vps ) | Выделенные серверы в Европе, США и Азии ( https://host4.biz/ru/servers/dedicated )
Cheltap
На сайте с 27.11.2008
Offline
30
#2
unixadm:
А обычным слешом он не экранируется?

Всё подобное перепробовал - ничего не получается.

Я даже не могу написать правило для отлова таких урлов по иному любому признаку,

например он начинается с `/qwerty', пишу

RewriteCond %{REQUEST_URI} ^/qwerty

Но это отлавливает все урлы, начинающиеся на qwerty, кроме содержащих доллар,

а долларовые ничто не берёт.

Как с ними работать?

unixadm
На сайте с 24.09.2010
Offline
110
#3

Странно, мануал упорно продолжает говорить про возможность его экранирования: As of Apache 1.3.20, special characters in TestString and Substitution strings can be escaped (that is, treated as normal characters without their usual special meaning) by prefixing them with a backslash ('\') character. In other words, you can include an actual dollar-sign character in a Substitution string by using '\$'; this keeps mod_rewrite from trying to treat it as a backreference.

А что говорит лог mod_rewrite при этом?

YDoron
На сайте с 25.10.2005
Offline
182
#4

Попробуй предшевствовать доллар с помощью \ , тоесть

RewriteCond %{REQUEST_URI} ^\$dollar

настраиваю Linux сервера, правлю баги, пишу фичи под Wordpress и Laravel
Cheltap
На сайте с 27.11.2008
Offline
30
#5
Nervjaga:
Попробуй предшевствовать доллар с помощью \ , тоесть
RewriteCond %{REQUEST_URI} ^\$dollar

Я пытаюсь даже просто отловить для обработки все обращения на сайт, начинающиеся со строки `qwerty'.

RewriteCond %{REQUEST_URI} ^/qwerty

..........

Никаких долларов не указываю, зачем? И не экранирую, соответственно.

Это правило прекрасно ловит урлы, начинающиеся с соответствующей подстроки,

но если же в строке запроса был символ доллара (где-нибудь уже после qwerty) - то не ловит!

Как такие урлы отлавливать и обрабатывать?

unixadm
На сайте с 24.09.2010
Offline
110
#6

RewriteLog /var/log/rewrite.log

RewriteLogLevel 5

RewriteLogLevel от 0 до 9, 9 - максимально подробный. Наверняка покажет, что там происходит в деталях.

Cheltap
На сайте с 27.11.2008
Offline
30
#7
unixadm:
RewriteLog /var/log/rewrite.log
RewriteLogLevel 5

RewriteLogLevel от 0 до 9, 9 - максимально подробный. Наверняка покажет, что там происходит в деталях.

Он покажет, если урл удовлетворяет условию RewriteCond,

а в моём случае сервер считает, что при наличии в урле доллара

такой урл ни под одно из условий не подпадает,

хотя это ерунда какая-то: я по началу урла его отлавливать пытаюсь.

Скажите, кто-нибудь обрабатывал GET-запросы, содержащие этот символ?

Как вы это делали?

dvaes
На сайте с 03.09.2007
Offline
65
#8

у меня нормально работает как не крути

конструкции вида

RewriteCond %{REQUEST_URI} ^/qwerty

RewriteRule ^.*\$a$ /login.html [L]

норм работают при обращении к qwerty$a

SJ
На сайте с 16.03.2008
Offline
78
#9

Извините конечно, что я со своим старческим маразмом лезу и какими-то странными "стандартами", но разве символ $ в валидном URL не кодируется как %24 ?

Любимый хостинг (http://beget.ru?id=2902) How can we grow old when the soundtrack of our lives is rock-n-roll?
dvaes
На сайте с 03.09.2007
Offline
65
#10

sokol_jack, вот, кстати, знак процента в мод реврайт у меня никогда срабатывал) как у тс доллар)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий