htaccess - 重写不允许URL中的转义字符

时间:2016-12-25 04:11:15

标签: regex .htaccess url mod-rewrite hash

我们在这里有一个文件:

hiddendirectory/directory/file.mp3

我们不希望别人看到第一个目录的实际目录位置,因此我们将其放入htaccess中以隐藏"它:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^fakedirectory/(.*)/(.*).mp3$ hiddendirectory/$1/$2.mp3 [NC,L]

这允许我们在我们的html中使用它:

fakedirectory/directory/file.mp3

这一切都很有效,除非文件名中包含"#"符号或类似。例如,这导致404:

fakedirectory/directory/file#1.mp3

我尝试用#替换%23,但它仍然无法正常工作。如果我绕过htaccess并使用这样的实际原始目录名,则放入%23 DOES工作:

hiddendirectory/directory/file%231.mp3

但最终我们需要它来处理我们放在htaccess中的虚假目录,如下所示:

fakedirectory/directory/file%231.mp3

我猜htaccess中的某些东西需要调整才能处理转义字符。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

知道了。显然只是添加" B"支架就是技巧

RewriteRule ^fakedirectory/(.*)/(.*).mp3$ hiddendirectory/$1/$2.mp3 [B,NC,L]