라라벨 pagination Https 적용, how to convert pagination http to https?

 Laravel framework 

라라벨 pagination Https 적용, how to convert pagination http to https?

 

  • 라라벨 pagination을 사용할 때, 사이트 인증서는 제대로 작동하는데도 불구하고
  • next page 혹은 previous page가 http로 넘어가는경우에 해결방법을 알아보자.

 

1. .env 파일 APP_URL 확인하기

 

  • 라라벨 프로젝트 루트디렉토리 內 .env 파일을 열어 APP_URL 부분을 확인한다.
  • http 로 설정되어있으면 https로 변경처리 해주자.

 

2. .env파일 변경후 그대로라면 사용자 지정 pagination을 만들어주자

 

  • 정말 원천적으로 고치고 싶다면 3번 참조.
  • view.blade에서 $result->links() 부분으로 pagination을 그려줄 것이다.
  • $result->links('new.pagination_list');  형식으로 새로운 pagination blade를 만들어주자.
  • 새로만든 new\pagination_list.blade.php 에는 아래와 같이 작성해주자.
@if ($paginator->hasPages())

    <ul class="pagination">
        {{-- Previous Page Link --}}
        @if ($paginator->onFirstPage())
            <li class="disabled"><span>&laquo;</span></li>
        @else
            <li><a href="{{ str_replace('http:','https:',$paginator->previousPageUrl()) }}" rel="prev">&laquo;</a></li>
        @endif

        {{-- Pagination Elements --}}
        @foreach ($elements as $element)
            {{-- "Three Dots" Separator --}}
            @if (is_string($element))
                <li class="disabled"><span>{{ $element }}</span></li>
            @endif

            {{-- Array Of Links --}}
            @if (is_array($element))
                @foreach ($element as $page => $url)
                    @if ($page == $paginator->currentPage())
                        <li class="active"><span>{{ $page }}</span></li>
                    @else
                        <li><a href="{{ str_replace('http:','https:',($url)) }}">{{ $page }}</a></li>
                    @endif
                @endforeach
            @endif
        @endforeach

        {{-- Next Page Link --}}
        @if ($paginator->hasMorePages())
            <li><a href="{{ str_replace('http:','https:',$paginator->nextPageUrl()) }}" rel="next">&raquo;</a></li>
        @else
            <li class="disabled"><span>&raquo;</span></li>
        @endif
    </ul>
@endif
  • 사용하는 모든 view blade의 ->links()를 본인이 커스텀한 pagination.blade.php 로 참조시킨다.

 

3. 라라벨 url scheme 결정 코드 http-foundation>Request.php 

 

  • 라라벨 페이지네이션 URL Scheme 결정 코드는 http-foundation\Request.php 를 참조한다.
  • Symfony\Component\HttpFoundation\Request 안의 isSecure()메소드쪽을 보면 아래와같이
  • isFromTrustedProxy()를 봐야하고, 결론적으로 HEADER_X_FORWAREDED_PROTO를 참조하게된다.
  • 하지만 괜히 건드렸다가 어떻게될지 모르니 필자는 2번 임시방편으로 고쳤다.
  • 혹시 Request.php사용해서 http -> https 변경 성공하신분들은 댓글로 방법좀 공유해주시면 좋겠어요.