반응형
다국어 SEO를 최적화 중인데, 한글로 검색된 페이지가 유난히 이상하게 구글홈페이지로 날라가는 버그가 발생했다.
현재 HTTP_REFERER를 통해서 이전 페이지 유무를 감지해서 이전페이지로 날려보내고 있었는데,
이상하게 구글만 원래 구글 홈으로 날려가더라.
개발자 도구를 통해 네트워크를 검색해보니
사이트 도메인으로 날라가는데, 그 후 구글 홈을 호출하더라.
이거 리다이렉션 오류구나 싶던...신기하게 도메인을 직접 치는건 정상 작동.
찾아보니 3가지의 HTTP_REFERER가 추출하는 방식을 알게되었다.
1. 주소창에 주소 입력. HTTP_REFERER 없음
2. 즐겨찾기의 경우. HTTP_REFERER 없음
3. 링크를 통한 접속. HTTP_REFERER 있음.
3번의 경우만 오류가 발생하는 것이었다.(당연히 이전페이지가 있으니 이전페이지로 날려보내던 것...)
https://3dmpengines.tistory.com/1897
해당의 오류를 잡기 위해서 도메인을 검증하는 방식을 추가했다.
기본 도메인을 아예 동적으로 가져오고,
아예 HTTP_REFERER가 없으면 1차로 걸러내고 있다면, 해당 Host 주소와 웹페이지 host를 비교하여
맞으면 이전페이지로.
아니면 메인페이지로 날려보내는 방식으로 추가했다.
$url = base_url();
if(!isset($_SERVER['HTTP_REFERER'])) {
return redirect()->to($url);
} else {
$userUrl = parse_url($_SERVER['HTTP_REFERER'])['host'];
$domainHost = parse_url($url)['host'];
if($userUrl == $domainHost) {
return redirect()->to($_SERVER['HTTP_REFERER']);
} else {
return redirect()->to($url);
}
}
728x90
'취업 > CodeIgniter' 카테고리의 다른 글
[ci4] 페이징, 페이지네이션 처리하기. (0) | 2022.09.23 |
---|---|
[CI4] 부트스트랩 5 NAV and Tabs Remember Tab. (0) | 2022.09.21 |
[JS] DIV태그 복사버튼 기능 구현하기. (0) | 2022.08.29 |
[ci4] DataTable 서버-사이드 Server-side Processing (0) | 2022.07.15 |
[CI4]HTML 특정 태그 위치로 스크롤 이동하기. (0) | 2022.07.11 |