Назад | Перейти на главную страницу

URL-адрес / имя файла apache со специальными символами

У меня есть этот URL:

http://domain.com/wp-content/uploads/2012/10/Hvilke-vilkår-følger-med-når-du-bestiller-nyt-bredbånd.png

Если я использую ftp / ssh или просто перехожу в эту папку (функция индекса apache), я вижу файл

Hvilke-vilkår-følger-med-når-du-bestiller-nyt-bredbånd.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

Вероятно, вам нужно нормализовать кодировку имен файлов, чтобы Юникод NFC форма. См. Соответствующие StackOverflow вопрос 12643402. Вы можете использовать один инструмент: convmv, который должен быть доступно в CentOS.

RFC 3986 §2.5 рекомендует, чтобы символы, отличные от ASCII, сначала были представлены в кодировке символов UTF-8, а затем каждый байт этой кодировки должен быть закодирован в процентах. Однако более старые RFC 2396 не рекомендует использовать какую-либо конкретную кодировку символов. Поэтому поведение браузера при вводе адреса, содержащего символы, отличные от ASCII, в адресную строку, зависит от реализации, особенно если вы используете более старую версию браузера. Например, Internet Explorer 7 в Windows и Safari 6 в OS X не обнаруживает описанной вами проблемы.

Кажется, что ваш веб-сайт работает на веб-сервере LiteSpeed, проприетарном клоне Apache. Когда LiteSpeed ​​генерирует URL-адреса ссылок в индексе каталога, он не выполняет процентное кодирование не-ASCII-символов в именах файлов, что приводит к неоднозначной ситуации, описанной выше. Напротив, Apache 2.2.16 выполняет процентное кодирование UTF-8 представления имен файлов, поэтому ваша проблема не возникнет в Apache. Возможно, более новая версия LiteSpeed ​​решит вашу проблему. Также возможно, что указание IndexOptions Charset=UTF-8 может помочь. Поскольку LiteSpeed ​​является частной собственностью, я ничем не могу вам помочь; вам нужно будет связаться с их технической поддержкой. Судя по тому, что ваш сервер издает <A HREF="..." вместо того <a href="...", Я бы предположил, что код LiteSpeed ​​для создания индекса каталогов не основан на какой-либо последней версии Apache.