如何允许 Rewrite_Map 中的特殊字符?

How to allow special characters in Rewrite_Map?

这是我使用的配置

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

我的 txt 文档看起来像这样:

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

但是,在访问我的站点 (http://s.overhash.net/9H40o) 后,它将 # 替换为 %23,使 URL 成为:

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

(无效)

我将如何确保 # 保留下来?

这不是重写映射问题,而是重写规则的工作方式。 默认情况下,特殊字符将被转义。

如果您不希望这种情况发生,请在您的重写规则中使用 NE 标志:

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

有关 https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_ne

的更多详细信息