제목 | 한글 검색시 특정한글이 포함된 경우 404에러 객체없음! 문제 | ||
---|---|---|---|
카테고리 | PHP | ||
글쓴이 | 율하파파 | 작성시각 | 2017/02/21 18:51:31 |
|
|||
코드이그나이터를 써서 처음으로 개발 및 납품한 곳에서 오류가 발생한다고 연락이 왔습니다. 현상은 목록 검색에서 "이종석" 이름으로 검색하면 "객체없음!" 이라고 페이지가 뜬다는 것이였습니다. 그래서, 이리저리 확인해 본 결과 검색어에 특정 단어의 글이(여기서는 "종") 포함되면 "객체없음! 404에러가" 발생하는 겁니다. - 인코딩한 url : http://ecofarm.chungnam.go.kr/farm/lists2/q/%EC%9D%B4%EC%A2%85%EC%84%9D/page/1/ - 인코딩 하지 않은 url : http://ecofarm.chungnam.go.kr/farm/lists2/q/이종석/page/1/ 위 두가지 모두 동일한 오류가 생기는데, 한글 관련된 옵션은 다 'UTF-8'로 설정해 두었음에도 왜 이런게 발생하는지 모르겠네요. 원인을 찾기 위해 종일 검색을 하면서 뒤져봤지만 가장 유사한 검색결과는 ' '한글'부분에 '종', '눅', '년' 과 같은 글자가 포함될 경우 404에러가 발생했습니다. 이 부분은 스프링이 아닌 톰캣의 URL요청상의 문제이며 요청 URL의 인코딩과정에서 일어나는 현상' 이라고 정도 뿐입니다. (참조 URL: https://slipp.net/questions/254) 저는 APACHE, PHP, MYSQL로 구성하여 사용하였기에 위의 내용이 직접적인 도움이 되지 못했습니다. 하지만 한가지 알아낸 건 XAMPP의 구버전에서 동일하게 포팅하여 서비스 동작을 해보면 정상동작하는 겁니다. 즉, XAMPP-WIN32-5.5.19 에서는 정상 동작하고, XAMPP-WIN32-5.6.11 이상의 버전에서는 문제가 발생하는 것입니다. 그래서 두 아파치 폴더를 비교해 힌트를 얻을려고 했지만, 실력이 미비한 관계로 아직 원인 확인이 되지 않았습니다. 고심끝에 여기에 질문을 남겨, 선배님들의 조언을 구하고자 합니다. 감사합니다. |
|||
다음글 | 모바일웹 하단메뉴에 질문드립니다. (2) | ||
이전글 | curl 초보입니다 ㅠ 로그인 후 화면 보이기 질문..... (1) | ||
kaido
/
2017/02/22 09:06:06 /
추천
0
|
율하파파
/
2017/02/22 09:35:51 /
추천
0
$config['permitted_uri_chars'] = '가-힣a-z 0-9~%.:_\-'; 이렇게 수정을 해 놓은 상태입니다. 코드이그나이터의 문제라기 보다는 아파치의 문제로 보입니다. XAMPP 대신 WAMP Stack 5.6.30-1을 설치해서 동일하게 테스트한 결과가 아래와 같습니다. Not FoundThe requested URL /farm/lists2/q/종/page/1/ was not found on this server. 위를 보시면 검색어가 인코딩된 문자가 아니라 깨져버리는 그 원인을 모르겠네요. |
kaido
/
2017/02/22 09:44:21 /
추천
0
그럼 httpd.conf 파일에 추가해 주세요. 물론 재시작은 기본이구요.
|
율하파파
/
2017/02/22 09:53:29 /
추천
0
kaido 님 먼저 댓글 주셔서 감사해요. 말해주신 내용 적용해서 재시작하여 확인했는데, 동일하게 발생하고 있네요. 그리고, 기존 XAMPP-WIN32-5.5.19 버전에서는 말해주신 내용이 없어서 정상적으로 되는데 그것이 신기하네요. |
한대승(불의회상)
/
2017/02/22 11:00:45 /
추천
0
"종" 이나 "석" 은 잘 넘어 가는데 "종석", "%EC%A2%85%EC%84%9D" 으로 테스트 해도 증상은 동일 하군요. 웹브라우져(크롬, IE, 엣지)에서 동일한 에러가 나는것으로 봐서 kaido님 의견처럼 서버 설정이나.htaccess에 설정된 rewrite 룰과 관련이 있는것 같은데 정확한 원인과 해결책은 아직 찾지 못했습니다.
|
율하파파
/
2017/02/22 11:16:07 /
추천
0
불의회상님은 "종"으로 하면 넘어간다니 저랑은 다르네요. .htaccess에 설정된 rewrite 룰도 검색을 더 조사를 해봐야겠네요. |
kaido
/
2017/02/22 11:30:12 /
추천
0
찾았습니다. .htaccess 에 index.php 부분을 이렇게 변경하세요. RewriteRule !index\.php index.php [NC,L]
rewrite 룰을 타지 못해서 CI가 아닌 php 모드로 실행 하려다 보니, 해당 파일이 없어서 나오는 문제 입니다. |
샤오란
/
2017/02/22 11:31:46 /
추천
0
댓글을 보고 있으니 존경스럽군요!
|
한대승(불의회상)
/
2017/02/22 12:47:22 /
추천
0
@kaido 잘 되네요. ^^ 수고 하셨습니다. 다른 URL은 어떻게 되는지 테스트해 봐야겠습니다. |
율하파파
/
2017/02/22 13:24:00 /
추천
0
하아~!. 이건 진짜. 대단하시네요. kaido님 감사합니다. 잘됩니다. 설명해 주신 rewrite 룰에 대한 내용을 이해하지는 못했지만 일단 정상적으로 검색 및 에러는 더 이상 나타나지 않습니다. 이번 기회로 rewrite 에 대해 좀 더 자세히 알아봐야겠습니다. rewrite가 무슨 역할하는지 모르고 그냥 갔다 쓰기만 했었거든요. 다시한번 kaido 님 고맙습니다. |
url 한글 오류에 대해서는 일괄되도록 안내해 드리는 것이 있습니다.
우선
config/config.php 파일에서
최우선으로 확인할 사항입니다.