【问题标题】:htaccess - Rewrite not allowing Escaped Characters in URLhtaccess - 重写不允许 URL 中的转义字符
【发布时间】: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


    【解决方案1】:

    知道了。显然,只需在括号中添加“B”就可以了

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

    【讨论】:

      猜你喜欢
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-18
      • 1970-01-01
      • 2014-04-08
      相关资源
      最近更新 更多