Wordpress/Apache - 이미지 파일 이름에 유니코드 문자가 포함된 404 오류
최근 웹 사이트를 새 서버로 옮겼는데 파일 이름에 유니코드 문자가 포함된 업로드된 이미지에서 404 오류가 발생하는 이상한 문제가 발생했습니다.
ssh/FTP 를 사용하면, 파일이 확실히 거기에 있는 것을 알 수 있습니다.
예를 들어 다음과 같습니다.
http://sjofasting.no/project/adnoy
어떤 이미지도 작동하지 않습니다.
코드:
<img class='image-display' title='' src='http://sjofasting.no/wp/wp-content/uploads/2012/03/ådnøy_1_2.jpg' width='685' height='484'/>
SSH:
-rw-r--r--- 1 xxxxxxxxxxxxxxx836813 8월 3일 16:12 ödnöy_1_2.jpg
또, 이상한 것은, 디렉토리로 이동하면, 이미지를 클릭할 수도 있고, 다음과 같이 동작합니다.
http://sjofasting.no/wp/wp-content/uploads/2012/03/
'dndnöy_1_2.jpg'를 클릭하면 작동합니다.
어쩐지 워드프레스가 생성되고 있다.
http://sjofasting.no/wp/wp-content/uploads/2012/03/†y_1_2.jpg
직접 폴더 브라우즈에서 복사하면
http://sjofasting.no/wp/wp-content/uploads/2012/03/a%CC%8Adn%C3%B8y_1_2.jpg
무슨 일이야?
편집:
워드프레스 소스에서 이미지 URL을 복사하면 다음과 같이 표시됩니다.
http://sjofasting.no/wp/wp-content/uploads/2011/11/Bore-Strand-Hotellg%C3%A5rd-12.jpg
Apache 브라우저에서 복사하면 다음과 같이 표시됩니다.
http://sjofasting.no/wp/wp-content/uploads/2011/11/Bore-Strand-Hotellga%cc%8ard-12.jpg
이 불일치의 원인: %C3%A5와 %cc%8
??
Unicode 정규화
0xC3
0xA5
【U+00E5 a-with-ring】 UTF-8을 사용합니다.
0xCC
0x8A
0 U+030A 8 UTF-8 。
형식 U+0035는 a링의 표기법입니다.a
U+030A 뒤에 오는 문자는 분해된(정규 양식 D) 방식입니다. å
Ȍ
다를 수 -글꼴 렌더링에 따라 약간 다를 수 있습니다. -글꼴 렌더링에 따라 약간 다를 수 있습니다.
일반적으로 어떤 파일 시스템을 사용하든 상관없습니다. 왜냐하면 합리적인 파일 시스템은 파일을 그대로 두기 때문입니다.「 」라고 하는 .[char U+00E5].txt
)å.txt
Windows ® Linux windows windows windows windows windows 。
반면에 맥은 미친놈이다.파일 시스템은 일반 형식 D를 선호하며 사용자가 전달한 모든 구성 문자가 분해된 문자로 변환됩니다.을 「」로 는,[char U+00E5].txt
디렉토리가 나열되면 이 '아까부터'로 되어 a[char U+030A].txt
. 파일에는 계속 액세스 할 수 있습니다.[char U+00E5].txt
Mac에서는 해당 입력을 검색하기 전에 일반 양식 D로 변환하지만 입력한 것과 동일한 파일 이름을 문자 시퀀스로 복구할 수 없습니다. 손실 변환입니다.
Mac에 파일을 저장한 후 파일 시스템으로 전송하면[char U+00E5].txt
그리고.a[char U+030A].txt
다른 파일을 참조하면 링크가 끊어집니다.
URL의 일반 양식 D 버전을 가리키도록 페이지를 업데이트하거나 Unicode 문자를 심하게 망가지지 않는 파일 시스템에서 파일을 다시 업로드합니다.
다른 사고방식으로 인해 이상한 상호운용성 문제가 발생합니다.
언급URL : https://stackoverflow.com/questions/12200901/wordpress-apache-404-error-with-unicode-characters-in-image-filenames
'programing' 카테고리의 다른 글
WebStorm 2018.1.4 + ESLint: TypeError: 이것.CliEngine은 생성자가 아닙니다. (0) | 2023.03.22 |
---|---|
Fetch API에서 권한 부여 헤더 설정 (0) | 2023.03.22 |
동형/유니버설 반응의 Image onLoad 이벤트 - 이미지 로드 후 이벤트 등록 (0) | 2023.03.12 |
AngularJS - 여러 리소스 쿼리가 완료될 때까지 기다립니다. (0) | 2023.03.12 |
중첩된 JSON 데이터에 액세스하는 Python (0) | 2023.03.12 |