【发布时间】:2014-06-10 14:42:49
【问题描述】:
我在 PHP Web 系统中使用 mod_rewrite,我的 .htaccess 中有这个重写规则
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+).(pdf)$ /static/data/biblioteca/$1.$2 [L]
这让我可以写作
<a href="http://my_domain.net/some_file.pdf" target="_new">title_of_some_file</a>
并在新的浏览器窗口中直接打开 PDF 文件,这样可以在看到源页面时隐藏我的目录结构。
这很好用,但有一个原因。我住在巴西,葡萄牙语有符号“á”、“é”、“ã”、“õ”,大多数可用书籍的标题都有这些符号。
当我使用 urlencode 获取正确的文件名时,似乎 mod_rewirte 会感到困惑,因为它会重定向文件但我收到错误 404!
我知道我可能会放弃符号,将“ã”替换为“a”等等,但我不想这样做,因为可能会出现一些令人尴尬的错误。例如,在葡萄牙语中,“côco”表示椰子,“cocô”表示粪便。如果我将“ô”替换为“o”,这两个词的写法将相同,并且会出现所有可能的(和令人作呕的)含义扭曲。
【问题讨论】:
-
Apache 为您解码查询字符串。另见:stackoverflow.com/q/459667/362536
-
顺便说一句:“伪装我的目录结构的优势...” - 可以通过该公共 URL 访问该文件,谁在乎目录结构是什么样的?
-
也许我是个傻瓜,@deceze,因为我只是不喜欢人们查看我所有的目录结构。我总是使用 mod_rewrite 来避免这种情况。此外,它缩短了我的网址。当然,该页面的目标是向网站用户提供某些 PDF 书籍。正如我之前所说,也许我只是有点傻。 :)
-
你用什么系统?我刚刚测试过,它在我的 Ubuntu/Linux 操作系统上运行良好
-
谢谢@Brad,我会看到这篇文章的。
标签: php apache .htaccess mod-rewrite urlencode