文件名中含有特殊字符的文件会在本地加载,但不会实时加载

问题描述 投票:0回答:1

我使用sitesucker(Mac工具)将Drupal网站转换为静态网站。我在本地运行 MAMP 6。有些图像丢失,可能是由于编码问题。

例如,我有这个文件:

Akzeptanz_GoA3+_Vorschaubild_Symbolbild_pexels-jéshoots-253647.jpg

无论是本地还是现场,它都完全像这样嵌入:

<img src="/path/Akzeptanz_GoA3+_Vorschaubild_Symbolbild_pexels-je%CC%81shoots-253647.jpg">

本地图像有效,Live it is 404。这种不同行为的原因和可能的解决方案是什么? Live 是一个常规的 LAMP 堆栈。

当我清空两个 htaccess 文件时会出现此行为。

apache .htaccess http urlencode
1个回答
0
投票

“修复”HTML 源中的 URL 编码将是首选解决方案,如评论中所述(从

e%CC%81
%C3%A9
)。但是,如果这不是一个选项,那么您也许可以在
.htaccess
中进行搜索/替换。

例如,靠近根

.htaccess
文件的顶部:

# Replace "e%CC%81" with "%C3%A9"
RewriteCond %{THE_REQUEST} ^GET\s/(.*)e%CC%81([^\s]*)
RewriteRule ^path/ %1\%C3\%A9%2 [NE,L]

/path/
模式
(如上所述)中包含 RewriteRule,以限制测试的 URL 数量。

我们将前面的条件中请求的URL与

THE_REQUEST
服务器变量进行匹配(并捕获),该变量保留实际请求的URL编码的URL。

substitution
字符串中的文字 % 应进行反斜杠转义,以避免可能被解释为反向引用(尽管由于它们后面没有数字,所以应该没问题)。

© www.soinside.com 2019 - 2024. All rights reserved.