当我尝试在临时服务器上加载文件图像时,出现错误,似乎与编码有关。当我访问以下 URL 时:
http://example.com/sites/default/files/2016-12/Articulaci%C3%B3n.jpg
Apache 抛出 404(未找到)错误,文件存在且名称为“Articulación.jpg”
但如果我尝试使用以下 URL 加载图像文件,则有效:
http://example.com/sites/default/files/2016-12/Articulacio%CC%81n.jpg
在我的本地服务器(开发)上,两个 URL 都可以使用,我可以看到预期的图像。
我的开发服务器是 MAMP 的安装:
- MacOS Sierra 10.12.3
- Drupal 8.2.1
- PHP 5.5.14
- Apache 2.2.26(Unix)
- PostgreSQL 9.4.4
我的暂存服务器是 Centos 服务器:
- Centos 7
- Drupal 8.2.1
- PHP 5.6.26
- Apache 2.4.6(CentOS)
- PostgreSQL 9.2.15
我认为这是 apache 的一种 URL 映射或编码后备行为,也许我的暂存服务器上的模块、扩展或服务器配置出现故障/丢失。
答案1
URL 有两种不同的 UTF-8 字符编码ó
。第一个是%CC%81
,第二个是%C3%B3
。您需要找出每个服务器上 URL 不同的原因,并确保它们是相同的。
因此,您的开发服务器中的某些设置会导致它以不同的方式对 URL 进行编码。这可能与 PHP 版本差异或 PHP 中使用的字符集/编码有关。
另一种可能性是 Mac OS 对文件名的要求不太严格,可以使用不同的编码来匹配同一个文件。