【发布时间】:2016-12-25 12:23:25
【问题描述】:
我们这里有一个文件:
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 确实有效:
hiddendirectory/directory/file%231.mp3
但最终我们需要它来处理我们放在 htaccess 中的假目录,如下所示:
fakedirectory/directory/file%231.mp3
我猜 htaccess 中的某些内容需要进行调整才能处理转义字符。有什么想法吗?
【问题讨论】:
标签: regex .htaccess url mod-rewrite hash