我有这个网址:
如果我使用 ftp/ssh 或者只是浏览到该文件夹(apache 索引功能),我会看到该文件
在美国,没有合法的结婚登记,也没有合法的结婚登记.png
如果我单击 apache 索引中的链接,我可以看到该文件,但是,如果我复制 URL 并尝试直接浏览它,我会收到错误:
该服务器上未找到所请求的 URL /wp-content/uploads/2012/10/Hvilke-vilkÃ¥r-følger-med-nÃ¥r-du-bestiller-nyt-bredbÃ¥nd.png。
我的错误日志还显示:
文件不存在:/wp-content/uploads/2012/10/Hvilke-vilk\xc3\xa5r-f\xc3\xb8lger-med-n\xc3\xa5r-du-bestiller-nyt-bredb\xc3\xa5nd.png
答案1
您可能需要将文件名的编码标准化为统一码 NFC表格。请参阅相关StackOverflow 问题 12643402您可以使用的一个工具是康维,应该是在 CentOS 中可用。
答案2
RFC 3986§2.5建议首先将非 ASCII 字符表示为 UTF-8 字符编码,然后对该编码的每个字节进行百分比编码。然而,较旧的RFC 2396不推荐任何特定的字符编码。因此,当您在地址栏中输入包含非 ASCII 字符的地址时,浏览器的行为取决于实现,特别是如果您使用的是较旧的浏览器。例如,Windows 上的 Internet Explorer 7 和 OS X 上的 Safari 6 不会出现您描述的问题。
您的网站似乎运行在 LiteSpeed Web Server 上,这是 Apache 的专有克隆。当 LiteSpeed 生成目录索引中的链接的 URL 时,它不会对文件名中的非 ASCII 字符进行百分比编码,从而导致上述模糊情况。相反,Apache 2.2.16 会对文件名的 UTF-8 表示进行百分比编码,因此您的问题不会发生在 Apache 上。也许更新版本的 LiteSpeed 可以解决您的问题。也可能指定IndexOptions Charset=UTF-8
可以提供帮助。由于 LiteSpeed 是专有的,我无法真正帮助您;您必须联系他们的技术支持。从您的服务器发出<A HREF="..."
而不是这一事实来看<a href="..."
,我猜想 LiteSpeed 的目录索引生成代码不是基于任何最新版本的 Apache。