Как разрешить специальные символы в Rewrite_Map? - PullRequest
0 голосов
/ 30 октября 2019

Вот конфигурация, которую я использую

RewriteEngine on
RewriteMap shortlinks txt:/var/www/html/s.overhash.net/public_html/shortlinks.txt
RewriteRule ^/(.+)$ ${shortlinks:$1} [R=temp,L]

Мой текстовый документ выглядит примерно так:

9H40o https://osyrisrblx.github.io/playground/#code/HYUw7gBAggTjCGBPAPMArgWwEYhgPgAoBKAOhhABM0BjEAggB3IDcAaCatOEYAFyIC8eJiGYBqAZ258iQA

Однако при переходе на мой сайт (http://s.overhash.net/9H40o),он заменяет # на% 23, делая URL таким:

https://osyrisrblx.github.io/playground/%23code/HYUw7gBAggTjCGBPAPMArgWwEYhgPgAoBKAOhhABM0BjEAggB3IDcAaCatOEYAFyIC8eJiGYBqAZ258iQA

(что недопустимо)

Как мне обеспечить сохранение #?

1 Ответ

0 голосов
/ 30 октября 2019

Это не проблема переписывания карты, это способ работы правил перезаписи. По умолчанию специальные символы будут экранированы.

Используйте флаг NE в вашей программе перезаписи, если вы не хотите, чтобы это произошло:

RewriteRule ^/(.+)$ ${shortlinks:$1} [NE,R=temp,L]

Подробнееподробности о https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_ne

...